vreemde cijfers

Arduino specifieke Software
Berichten: 6
Geregistreerd: 09 Jan 2017, 17:59

vreemde cijfers

Berichtdoor rdenk » 09 Jan 2017, 18:13

Hallo,

Net zoals veel anderen heb ik me in het grote arduino avontuur gestort.

Ik ben bezig om met behulp van de arduino een numitron IV buisje van 9 naar 0 te laten aftellen.

de hardware is zonder al te veel problemen gelukt. Ik gebruik een 74 XX595 shiftregister voor de aansturing van de numitron via de arduino.

Alle getallen worden prima weergegeven behalve de 4,3,2 en de 0.

Kan iemand mij vertellen welke fout ik maak?

Onderstaande de code.
///////////////////////////////////
int DS_pin = 8;
int STCP_pin = 9;
int SHCP_pin = 10;
byte data;
void setup()
{
pinMode(DS_pin,OUTPUT);
pinMode(STCP_pin,OUTPUT);
pinMode(SHCP_pin,OUTPUT);
Serial.begin(9600);
}
boolean registers[8];



void nine()
{
registers[7]=HIGH;
registers[6]=LOW;
registers[5]=LOW;
registers[4]=LOW;
registers[3]=LOW;
registers[2]=LOW;
registers[1]=LOW;
registers[0]=HIGH;
delay(1300); writereg();
}
void eight()
{


registers[7]=HIGH;
registers[6]=LOW;
registers[5]=LOW;
registers[4]=LOW;
registers[3]=LOW;
registers[2]=LOW;
registers[1]=LOW;
registers[0]=LOW;
delay(1300); writereg();
}

void seven()
{

registers[7]=HIGH;
registers[6]=LOW;
registers[5]=LOW;
registers[4]=LOW;
registers[3]=HIGH;
registers[2]=HIGH;
registers[1]=HIGH;
registers[0]=HIGH;

delay(1300); writereg();
}

void six()
{
registers[7]=HIGH;
registers[6]=HIGH;
registers[5]=LOW;
registers[4]=LOW;
registers[3]=LOW;
registers[2]=LOW;
registers[1]=LOW;
registers[0]=LOW;
delay(1300); writereg();
}

void five()
{

registers[7]=HIGH;
registers[6]=HIGH;
registers[5]=LOW;
registers[4]=LOW;
registers[3]=LOW;
registers[2]=LOW;
registers[1]=LOW;
registers[0]=HIGH;
delay(1300); writereg();

}
void four()
{

registers[7]=0;
registers[6]=0;
registers[5]=HIGH;
registers[4]=HIGH;
registers[3]=LOW;
registers[2]=0;
registers[1]=HIGH;
registers[0]=HIGH;
delay(1300); writereg();

}
void three()
{

registers[7]=HIGH;
registers[6]=LOW;
registers[5]=LOW;
registers[4]=LOW;
registers[3]=HIGH;
registers[2]=LOW;
registers[1]=LOW;
registers[0]=HIGH;
delay(1300); writereg();

}
void two()
{
registers[7]=HIGH;
registers[6]=LOW;
registers[5]=HIGH;
registers[4]=LOW;
registers[3]=HIGH;
registers[2]=LOW;
registers[1]=LOW;
registers[0]=LOW;
delay(1300); writereg();

}
void one()
{

registers[7]=HIGH;
registers[6]=LOW;
registers[5]=LOW;
registers[4]=HIGH;
registers[3]=HIGH;
registers[2]=HIGH;
registers[1]=HIGH;
registers[0]=HIGH;
delay(1300); writereg();

}
void zero()
{

registers[7]=LOW;
registers[6]=LOW;
registers[5]=LOW;
registers[4]=LOW;
registers[3]=LOW;
registers[2]=HIGH;
registers[1]=LOW;
registers[0]=LOW;
delay(1300); writereg();

}
void writereg()
{
digitalWrite(STCP_pin, LOW);

for (int i = 7; i>=0; i--)
{
digitalWrite(SHCP_pin, 0);
digitalWrite(DS_pin, registers[i] );
digitalWrite(SHCP_pin, 1);
Serial.print(registers[i]);

}
digitalWrite(STCP_pin, HIGH);
Serial.println();
}
void loop()
{
nine();
eight();
seven();
six();
five();
four();
three();
two();
one();
zero();


}
//

Advertisement

Gebruikers-avatar
Berichten: 210
Geregistreerd: 03 Sep 2013, 10:03
Woonplaats: Katwijk ZH

Re: vreemde cijfers

Berichtdoor baco1978 » 09 Jan 2017, 20:48

Kan je ook een schema en foto van het geheel plaatsen

en wat geeft de numitron weer als er bijvoorbeeld een 4 wordt weergegeven?

misschien kan je ook wat kommentaar er bij plaatsen in je programma, zodat het in je code te zien welke segment met LOW/HIGH oplicht
Met vriendelijke groet Arjan

Berichten: 6
Geregistreerd: 09 Jan 2017, 17:59

Re: vreemde cijfers

Berichtdoor rdenk » 09 Jan 2017, 22:21

De pin layout van de numitron:

https://drive.google.com/open?id=0B22je ... mlDcUpsU1k

de foto:
https://drive.google.com/open?id=0B22je ... UUwZzBGNmc

de numitron is verbonden met de 74 XX595 van q0 tot en met q7:

pin1 is vcc

Numitron 74XX595 in de code
pin 2 q0 registers[0]
pin 3 q1 registers[1]
pin 4 q3 registers[2]
pin 5 q4 registers[3]
pin 6 q5 registers[4]
pin 7 q6 registers[5]
pin 8 q7 registers[6]

Als er een 4 weergegeven zou moeten worden springen alleen de punt en segmenten f en g aan.
Als er een 3 weergegeven zou moeten worden springen de punt en segmenten b, c, d, g, aan.
Als er een 2 weergegeven zou moeten worden springen alleen segmenten c,d,e,g aan.
Als er een 0 weergegeven zou moeten worden springen alleen segmenten a, b, c, d, e en de punt aan.
Laatst gewijzigd door rdenk op 09 Jan 2017, 22:31, in totaal 1 keer gewijzigd.

Gebruikers-avatar
Berichten: 210
Geregistreerd: 03 Sep 2013, 10:03
Woonplaats: Katwijk ZH

Re: vreemde cijfers

Berichtdoor baco1978 » 09 Jan 2017, 22:30

het is handiger om er achter welk segment je aan stuurt

zie zoals registers[0]

dan weet je meteen welk deel je van het display je aanstuurt

door // te gebruiken kan je een notitie achterlaten in je code, deze wordt verder niet mee gecompileerd .

Code: Alles selecteren
registers[7]=0;
registers[6]=0;
registers[5]=HIGH;
registers[4]=HIGH;
registers[3]=LOW;
registers[2]=0;
registers[1]=HIGH;
registers[0]=HIGH;  //Segment e
Met vriendelijke groet Arjan

Gebruikers-avatar
Berichten: 2655
Geregistreerd: 06 Aug 2016, 01:03

Re: vreemde cijfers

Berichtdoor Koepel » 10 Jan 2017, 00:42

Het is inderdaad lastig na te gaan welke streepjes er aan gaan.
Maak voor cijfer 4 eens alles LOW en kijk wat er gebeurt. Is het dan ook echt helemaal uit ? Zet dan één streepje aan, en probeer zo verder te komen.

Berichten: 6
Geregistreerd: 09 Jan 2017, 17:59

Re: vreemde cijfers

Berichtdoor rdenk » 10 Jan 2017, 09:03

Op een of andere manier werkt de combinatie van een numitron IV-9 buis met een SN74HC595N andersom. HIGH is uit, LOW is aan. Als je alle segmenten een LOW zou geven dan springen keurige alle segmenten aan. De opstelling zoals op de foto heb ik gemaakt van wat ik gezien heb op een aantal YouTube filmpjes.

Gebruikers-avatar
Berichten: 210
Geregistreerd: 03 Sep 2013, 10:03
Woonplaats: Katwijk ZH

Re: vreemde cijfers

Berichtdoor baco1978 » 10 Jan 2017, 11:02

Op zich niks vreemds aan.
Je numitron hangt aan +5V, op het moment dat je je uitgang HIGH maakt staat er 5V op het pinnetje, dan kan er geen stroom lopen.
Zodra je hem LOW maakt staat er 0volt op het pinnetje..... en er begint stroom te lopen.... waardoor het draadje begint te gloeien :)
Met vriendelijke groet Arjan

Berichten: 6
Geregistreerd: 09 Jan 2017, 17:59

Re: vreemde cijfers

Berichtdoor rdenk » 10 Jan 2017, 12:01

Ok, weer wat geleerd. Ik dacht dat het andersom was.
Ik hang hem overigens liever aan 4,5 volt, of de 3,3v van de arduino. Volgens de PDF kan die maximaal 4,5, volt aan.
Neemt niet weg dat als ik de pinnetjes zelfstandig van stroom voorzie ik keurig draadje voor draadje zie oplichten. Doe ik het via de SN74HC595N dan is het wat minder eenvoudig.

Heb wel een aantal TLC's bestelt, maar daar zit een levertijd op van 3 weken. Tenzij je natuurlijk bij Conrad de hoofdprijs wenst te betalen. Wellicht dat een TLC een beter voorspelbaar resultaat geeft.

Gebruikers-avatar
Berichten: 210
Geregistreerd: 03 Sep 2013, 10:03
Woonplaats: Katwijk ZH

Re: vreemde cijfers

Berichtdoor baco1978 » 10 Jan 2017, 12:55

Je hebt je numitron nu ook via de HC595 aan 3.3v aangesloten, zover ik kan zien op de foto?


volgens de arduino datasheet:
3V3. A 3.3 volt supply generated by the on-board regulator. Maximum current draw is 50 mA.

lijkt me niet verstandig om het zo aan te sluiten.

je kan de hc595 beter gewoon op 5volt aan sluiten en tussen iedere pen van de numitron en de output van de hc595 een diode 1N4148 plaatsen, dan krijgt de numitron netjes 4,3volt
Met vriendelijke groet Arjan

Gebruikers-avatar
Berichten: 2655
Geregistreerd: 06 Aug 2016, 01:03

Re: vreemde cijfers

Berichtdoor Koepel » 10 Jan 2017, 13:08

Een LOW op de tube pin zet dat segment aan en de 74HC595 inverteert het signaal niet, dus een LOW zal het segment aanzetten, en alles op HIGH zet het uit. Ik schreef het verkeerd om :oops:

Ik ben niet bekend met nixie tubes, maar ik kan wel een datasheet lezen. Kun je wat meer gegevens vermelden en ook de onderdelen benoemen, zodat ik een datasheet kan opzoeken.
Er zijn bijvoorbeeld meerdere versies van de Numitron IV. Heb je een link naar een datasheet ?

De 74HC595 kan misschien met één uitgang een segment aanzetten, maar de totale stroom van de VCC en GND pin van de 74HC595 kunnen maar weinig hebben.
Er zijn ook '595' types die meer kunnen, zoals de TPIC6B595.
Welk TLC type bedoel je ?

Kijk eens hier: http://hackaday.com/?s=nixie, daar staan heel veel projecten.

Het beste is om eerst je shift registers te testen. Dat kun je doen zonder de tube er aan. Meet met een multimeter of de uitgangen kloppen met wat je in de sketch hebt gezet. Daarvoor is het handig om een test-sketch te maken. Het is normaal om tijdens een project een stuk of 5 test-sketches te hebben.
Kun je de shiftOut() ? https://www.arduino.cc/en/Reference/ShiftOut

Doe dit stap voor stap. Probeer niet om meteen het eindresultaat werkend te krijgen.
Je hebt de tube getest, en dat werkt. Da's mooi. Je kunt nu eerst proberen om de sketch werkend krijgen zodat je de uitgangen kunt krijgen zoals je wilt (test het zonder tube). Vervolgens heb je een chip nodig die voldoende stroom aan kan. De juiste spanning voor de tube maken door alles met 5V te doen en de segmenten met diodes zoals baco1978 schrijft lijkt me een goed plan. Vervolgens alles met elkaar verbinden.

Volgende

Terug naar Arduino software

Wie is er online?

Gebruikers in dit forum: iofezcmohevul en 19 gasten