Arduino stopwatch

Of is er iemand die mij kan helpen bij het schrijven van een programma voor een Arduino? die ik wel zelf kan uploaden.

Ik heb zopas uw email gelezen en ik denk dat ik al genoeg doe met een programma te schrijven.
Er lopen niet veel gekken rond die bereid zijn om zo'n Chrono+rondenteller programma for free te schrijven.

Wat ik niet begrijp is dat je iemand kent die PICprogramma's kan schrijven maar geen tijd meer heeft, dat laatste kan ik begrijpen maar dat hij geen 5min tijd meer heeft om er ene te programmeren gaat er bij mij niet in.

Ik ga vandaag toch het programma afwerken en hier dan posten, dan is het
aan u de keuze wat ermee wilt doen.
Een proefopstelling ga ik niet maken wegens tijdsgebrek, enkel simuleren en dat is al voor 99,9% zeker werkend maar ik denk 100% als er geen hardwarefouten zijn gemaakt.

De ingangen zijn geprogrammeerd en werken zoals uw relais bedraad zijn!

Er staat ook een fout in uw schema.
Ingang pin1 van de UDN2981 is verbonden met uitgang pin18 en die is nergens te bespeuren, is de nummering van de ingangen of uitgangen fout? print ook nazien!

Ik raad u dan ook aan van een picprogrammer te kopen/lenen/maken/stelen moesten er wijzigingen/verbeteringen nodig zijn... of gebruik uw Arduino als programmer.
Een programma "op afstand" schrijven is zeer moeilijk onthou dat.

Ik hoop ook dat het goeie relais zijn, niet alle relais kunnen goed overweg met zeer lage stromen, gebruik pullupweerstanden van 1k5.

Nog een paar vragen:

1. De relaiscontacten, van boven naar onderen, welke functie hebben ze?
De resets zijn duidelijk maar de 4 anderen?

2. Nu heb ik antidender vertragingen van 10mS ingeprogrammeerd voor de relaiscontacten, is dat voldoende?

3. De resets hebben een vertraging van 1sec., moest je per ongeluk op een resetknop drukken dan is dat geen ramp, meer of minder kan ook, u bepaalt.

4. Vergeten...ga nog eens nadenken... ;)

Als de antwoorden er zijn post ik het programma en wacht dus af.

LDmicro user.

Nog een paar vragen:

1. De relaiscontacten, van boven naar onderen, welke functie hebben ze?
De resets zijn duidelijk maar de 4 anderen?

Relais contact 1 : Start stopwatch
Relais contact 2 : Stop stopwatch
Relais contact 3 : Reset stopwatch
Relais contact 5 : +1 counter teller
Relais contact 6 : -1 counter teller
Relais contact 7 : Reset counter teller naar 00

2. Nu heb ik antidender vertragingen van 10mS ingeprogrammeerd voor de relaiscontacten, is dat voldoende?

Dit lijkt mij voor eerst voldoende(dit zal ik misschien moeten uitvinden testen)

3. De resets hebben een vertraging van 1sec., moest je per ongeluk op een resetknop drukken dan is dat geen ramp, meer of minder kan ook, u bepaalt.

Dit zou wel 3 seconden mogen worden

4. Vergeten...ga nog eens nadenken... ;)

Ik ben er hard mee bezig ;) Alleen dit projectje ging mij te hard.

Bedankt voor eerst

Er staat ook een fout in uw schema.
Ingang pin1 van de UDN2981 is verbonden met uitgang pin18 en die is nergens te bespeuren, is de nummering van de ingangen of uitgangen fout? print ook nazien!

Hoe bedoeld u dit? pin 1 van UDN2981 zit toch verbonden met pin 21 van PIC16f882 of te wel PIC16F876a

[Bericht gewijzigd door Henry S. op woensdag 9 oktober 2019 00:40:15 (15%)

Nee, ingang 1 stuurt uitgang 18 en die uitgang staat nergens op het schema.

En er staat nog een fout in.
De voeding van de pic in uw schema is niet juist.

pinnen 8 en 19 zijn de Vss (GND)
pin 20 is de VDD = +5v

Controleer ook de print hierop.

Ik ben toch bezig met een proefopstelling te maken om zeker te zijn als je uw pic laat programmeren, het zou zonde zijn moesten er fouten instaan.

De resettijd heb ik op 2sec gehouden, uit ervaring weet ik dat 3sec veel telang is, je moet eens 3s op een knop drukken, echt wel lang ;)
Maar kan nog altijd aangepast worden als je persé 3s wilt, geen probleem je zegt het maar.

LDmicro user.

Top,

Die 5V+ en gnd ga ik gauw nakijken en veranderen. Verder moet ik dus de kristal vervangen voor een 20 mhz. Ik zie wat u bedoeld met pin 1 en die ga ik veranderen naar pin 8.

2 sec. laten we dan zo.

Het bord is heel mooi gemaakt. Die 7 segments heb je die zelf geprint?

Trouwens, ga je ook die RV908 gebruiken voor dit bord?

I love it when a plan comes together !

Nee de RV908 gebruik ik voor mijn zelfbouw led schermen/reclame borden enz.

Zomaar iets veranderen gaat niet anders moet ik gans mijn programma aanpassen.
Ga het eens bekijken na de test die er veelbelovend uitziet ;)

Ja een 20Mhz kristal is nodig.

LDmicro user.

Hier heb je uw programma, exact gemaakt zoals naar het schema (fouten niet inbegrepen)

20Mhz Kristal
Pin6 moet 27 worden draad/printspoor aan pin6 moet naar pin27 van de 876a.

Hoe je de fout gaat aanpassen van die UDN2981 weet ik niet maar pin21 van de 876a is de seconden digit en zo verder.

Wees er u van bewust dat de digits gemultiplext worden, elk cijfer krijgt maar 1/7 van de tijd, dat is een beetje aan te passen door de stroom wat te verhogen in de leds.

Het programma werkt 100% zeker, als het bij u niet werkt heb je een fout gemaakt of is de print niet zoals het schema.

Je kunt de hex-file meedoen/opsturen naar de winkel of zelf programmeren.

Ik hoop van eens een foto of filmpje te zien als het in werking is.
dat is uw enige kostprijs aan mij ;)

Kleine aanpassingen kunnen nog gevraagd worden maar dan moet je zelf kunnen een pic programmeren.

Good luck!

edit: de dubbel punten worden niet door de pic aangestuurd, je moet ze maar rechtstreeks verbinden.

edit2, nog een bijkomstigheid... als je ipv relais drukknoppen gebruikt dan heb je maar 4 drukknoppen nodig, een reset kan dan gemaakt worden door beide knoppen 2sec ingedrukt te houden.
Drukknoppen hebben meestal een NO contact, je gebruikt dan gewoon pulldown weerstanden en de knoppen aan de +5V

edit: de goede versie staat verderop!

LDmicro user.

Bedankt voor je hex bestand. Ik ga proberen het voor elkaar te krijgen.

Ik zal zeker het resultaat laten zien. Bedankt voor eerst.

Gisterenavond tijdens een wandeling dacht ik eraan dat je de chrono niet kunt herstarten als je die gestopt hebt, enkel na een reset kun je dat.

Als het niet telaat is wil ik het programma wel aanpassen, in nodig, zodat je na een stop de chrono wel kunt herstarten.

edit: in bijlage het programma dat je wel kunt herstarten als je op stop hebt gedrukt en voor alle duidelijkheid, de tijd dat je op stop hebt gedrukt wordt niet bijgeteld...er wordt enkel verder geteld van het moment dat je op stop hebt gedrukt.Aan u de keuze.

BTW. Als alles naar tevredenheid werkt, zou je misschien kunnen overwegen van een donatie te doen aan CO hoeveel maakt mij niet uit en moet het ook niet weten.
Het is dank aan CO dat alles supersnel in zijn plooi is gevallen :)

LDmicro user.

Hij werkt perfect super! :) :)

De 2e versie hex bestand werkt het best hierbij kun je inderdaad de stopwatch stoppen en weer door starten. Bij de eerste als je hem wou stoppen ging hij ook gelijk na 2 seconden resetten waardoor je dus gelijk je tijd kwijt bent. Enkel de leds die niet aangestuurd worden hebben last van een lek stroompje op ieder segment. Hier zal ik dus nog een weerstand moeten toepassen.

Blij dat het werkt ;)

Nu je het zegt zit er in de eerste versie een denkfout die zich automatisch heeft opgelost in de 2de versie, zo zie je dat een programma niet altijd doet wat je denk maar doet wat je schrijft :)

Het is geen lekstroompje volgens mij maar een gevolg van schakelsnelheden en relatief grote stromen.
Ik zou graag het schema eens zien van zo'n cijfer met de weerstandswaarden.

Ik veronderstel dat je nu zelf pic's kunt programmeren en heb nu de schakelvolgorde veranderd tussen digitselect en segmentdata, je kunt het misschien eens proberen.

LDmicro user.

Ik heb gelijk een pickit 2 mee genomen bij voti en ga daar eens mee aan de slag. Ik ga eens kijken als ik wat kan vinden van een segment hoe die aangesloten zit.

Deze morgen met een heldere geest opgestaan en een oplossing gevonden.
Hier het programma dat het zou moeten doen dit weekend ;)

Met gewone 7seg display's zag je daar niks van, die grote displays zijn veel feller en leds reageren razendsnel.

LDmicro user.

Oke waarschijnlijk ben ik dan niet eens een weerstand nodig. Ik heb een extra 16F876a meegenomen alleen moet ik mijn pickit 2 nog aan de praat krijgen. Helaas heb ik nog geen goede download gevonden daarvoor enkel telkens de pickit 3 download. Heeft er iemand misschien een link daarvoor?

Hier heb je alle files die ik gebruik voor mijn pickit2

Korte handleiding:

Voedingsspanning van de print halen
Pickit aansluiten (JUIST aansluiten!!!)
Pickit2V2 bestand opstarten
Hex file importeren (chrono..)
En Write aanklikken.

edit: Gmail wil onder geen beding die ZIP opsturen, er zit een EXE file in en als ik die hernoem naar een andere extentie wil die nog niet.
Geen zip's, exe of rar's meer denk ik.

edit2: als je verder doet met pic's koop dan ook eens zo'n adapter, gebruik ik ook veel, makkelijk als je met breadboard werkt.
..

LDmicro user.

Ik heb de pic voorzien van een nieuwe hex file. Echter blijven de niet aangestuurde segmenten zwak tot bijna niet oplichten. Het is niet storend alleen de counter teller waarvan de segmenten niet worden aangestuurd gaan zwak mee lichten met de seconde teller. In Ieder geval het bestandje in de pic schieten lukt al :P.

Ook gelijk een filmpje van de werking.

Hier nog een filmpje van het zwak oplichten van de niet aangestuurde segmenten.

Arco

Special Member

Dat 'ghosting' wordt meestal veroorzaakt door verkeerde volgorde van aansturing bij multiplexen...

Juiste volgorde is:
1) alle displays deselecteren
2) data voor display 1 op poort zetten
3) display 1 selecteren
4) wachten tot tijd om is
5) display 1 deselecteren
6) data voor display 2 op poort zetten
7) display 2 selecteren
...
enz...

Als je bijv. 5) en 6) omdraait, krijg je dit soort verschijnselen...

Arco - "Simplicity is a prerequisite for reliability" - hard-, firm-, en software ontwikkeling: www.arcovox.com

Volgens mij kan dat niet meer aan de software liggen, want voordat de segmenten gestuurd worden alle digits uitgeschakeld, de ingangen van de UDN2981 worden op 0 gezet, dan wordt de data op de ULN2803 gezet en dan pas wordt de geselecteerde digit op 1 gezet.

Ik heb nu geen tijd meer want moet nog pinten gaan pakken ;)

Als ik tijd heb zal ik dit WE eens de scoop aan de pic hangen.
Ik denk dat er iets aan de schakeling/voeding/ontstoring niet klopt, ik kan enkel maar raden.
Heb jij een scoop? misschien kun jij eens zoeken.

Bedankt voor de filmpjes in elk geval.

Wordt vervolgd...

edit: je hebt de bedrading toch goed van die UDN2981?

LDmicro user.
Arco

Special Member

Het kan ook door de UDN2981 worden veroorzaakt. Die heeft een leakage current van 20uA, ruim voldoende om goede leds op te laten lichten...
Oplossing: weerstandje van 10k van alle anodes naar gnd.

Kan ook nog zijn omdat de UDN traag is, heeft een 'turn-off delay' van 2...10uS. (die tijd moet je dus wachten voordat je de data verandert)

[Bericht gewijzigd door Arco op vrijdag 11 oktober 2019 19:37:03 (27%)

Arco - "Simplicity is a prerequisite for reliability" - hard-, firm-, en software ontwikkeling: www.arcovox.com

De 10k helpt niet dan zou ook alle segmenten het moeten doen volgens mij. Als alle digits 0 is dan lichten de segmenten g niet licht op, enkel als er 1 daarvan een 8 is bijv.

Arco

Special Member

Heb net even het filmpje gekeken, dat is dan bijna zeker de traagheid van de UDN (aangenomen dat alles in het multiplexen goed gaat)
Een delay tussen display uit en data veranderen is dan de oplossing...
Als de microcontroller het display uit zet, gaat het pas 10uS later werkelijk uit. Daardoor krijg je 'ghosting' met data van het volgende display.
(Dit ook doordat de ULN veel sneller is als de UDN)

Arco - "Simplicity is a prerequisite for reliability" - hard-, firm-, en software ontwikkeling: www.arcovox.com

Is de voeding wel goed genoeg ?

I love it when a plan comes together !