Hallo,
We zijn bezig met het bouwen van een soort zonnevolger.
We zijn al twee dagen bezig met een poging om een eenvoudige actuator aan te sturen met een Arduino microcontroller. De actuator meet omwentelingen met een Reed-sensor. Dit is een schakelaar die reageert op een ronddraaiend magneetje in een tandwiel.
Wij proberen grip te krijgen op het signaal uit de Reed sensor, maar dit blijkt zeer onvoorspelbaar. We krijgen geen vaste breedte pulsen, waardoor de Arduino niet weet welke pulsen wel/niet te tellen. Heeft iemand enig idee wat we verkeert doen?!
SparkyGSX
Een manager is iemand die denkt dat negen vrouwen in één maand een kind kunnen maken
Waarschijnlijk dendert het ding, aangezien het een mechanische schakelaar is. Je kunt beter een hall sensor gebruiken, of een RC netwerkje om het denderen te onderdrukken. Je kunt het ook in software oplossen, als het moet, maar dat is meestal niet echt handig.
rew
four NANDS do make a NOR . Kijk ook eens in onze shop: http://www.bitwizard.nl/shop/
@sparky: Huh? Ik zou gewoon in software iets doen als: de eerste flank pak je. En dan wordt je "doof" voor zolang als dat het signaal niet een bepaalde tijd alleen maar "laag" is geweest.
@ZininZelfdoen: Mogelijk is het inderdaad de "dender" waar je last van hebt. Maar ik dacht zelf aan: Heb je een pullup of pull-down aangesloten?
Kijk, dat zijn snelle reacties!
@sparky. We hebben geen keuze voor hall, dit zit er nu eenmaal op. We hebben nog geen condensator geprobeerd, moeten we inderdaad nog even proberen, dank. We zijn nu voor met software bezig.
@rew
We hebben een pull-up. We zijn inderdaad aan het proberen om het precieze signaal te meten om een 'dove' periode te bepalen. Het signaal ziet er bijvoorbeeld zo uit.
Tijd HIGH: 30 Tijd LOW: 112 Teller= 17
Tijd HIGH: 31 Tijd LOW: 125 Teller= 18
Tijd HIGH: 31 Tijd LOW: 50 Teller= 19
Tijd HIGH: 29 Tijd LOW: 36 Teller= 20
Tijd HIGH: 30 Tijd LOW: 129 Teller= 21
Tijd HIGH: 31 Tijd LOW: 93 Teller= 22
Tijd HIGH: 29 Tijd LOW: 16 Teller= 23
Tijd HIGH: 31 Tijd LOW: 122 Teller= 24
Tijd HIGH: 29 Tijd LOW: 118 Teller= 25
SparkyGSX
Een manager is iemand die denkt dat negen vrouwen in één maand een kind kunnen maken
@REW: anti-dender code in software is vaak niet eenvoudig voor beginners, lastig om goed te maken, vooral als je signalen met hoge frequenties moet kunnen inlezen, en het geeft een heleboel overbodige overhead. Daarnaast hoort het, naar mijn idee, niet in de software thuis; het is een hardware probleem, los het dan ook in hardware op! Alleen als dat niet kan, of veel te duur en complex wordt, is het echt zinvol om naar software oplossingen te gaan kijken. Het gebeurd natuurlijk wel eens dat je de hardware niet meer kunt aanpassen, en dan heb je niet veel keus, maar in dit geval zou ik het afraden.
Maar je hebt helemaal gelijk met je pull-up of pull-down weerstanden, dat beginnersfoutje had ik over het hoofd gezien.
Wat zou je aanraden voor hardware oplossing. RC dus? Enig idee over de waarden? We werken met een Arduino op 5 volt.
SparkyGSX
Een manager is iemand die denkt dat negen vrouwen in één maand een kind kunnen maken
Dat ligt een beetje aan de frequenties die je verwacht. Een pull-up weerstand van 1k en condensator van 1uF naar de ground geeft een tijdconstante van 1ms, dat lijkt me een redelijk startpunt. Zet dan nog een weerstandje in serie met het reedcontact (dat naar de ground schakelt), om te voorkomen dat deze steeds een opdonder krijgt als hij de condensator ontlaadt. Iets in de orde van grootte van 100 ohm of zo.
Bekijk het signaal eens met een scope, zonder extra hardware, en bekijk dan wat er gebeurd als je de waarden van de weerstanden en condensator veranderd.