Hey,
Ik ben bezig om met een PIC16F84 een lichtsensor te bouwen die mij vertelt hoe licht het is in de kamer. Hij is opgebouwd uit een LDR en een condensator. De PIC meet hoe lang het duurt voor dat de condenstaor is opgeladen via de LDR.... goed dit verhaal kennen jullie wel. Maar wat is nu het probleem. Het omslagpunt van de schmitt-trigger op pin RA4 is niet constant. Het wisselt enorm. Daarom krijg ik allerlei verschillende metingen bij een exact gelijke lichtsterkte. Er is een bepaalde tijdsduur ingesteld als maximum.... gaat de tijd die het kost om de C op te laden daar over heen.... dan gaat een ledje branden. Wat ik nu zie is dat als ik het proggie start het ledje eerst enorm gaat flippen (knipperen enzo) en daarna constant gaat branden. als hij eenmaal constant brand krijg jhe hem met een vuurtoren nog niet weer uit! 
wie ow wie kan mij helpen met tips?
Bastiaan
Bachelor of Engineering -- Microcontrollers AVR, PIC (asm, C), PC applicaties (C, C++), Webpages (HTML, CSS, PHP, SQL), Rail-infra engineer
Op wo 21-08-2002 23:11:12 schreef Bernd:
Maar wat is nu het probleem. Het omslagpunt van de schmitt-trigger op pin RA4 is niet constant. Het wisselt enorm.
Ik heb het ff voor je opgezocht. De smitt trigger inputs hebben een hysteresis van 0,1v typical. Dus dat het sterk wisselt komt niet door dat omslagpunt want dat heeft maar 0,1v hysteresis.
Daarom krijg ik allerlei verschillende metingen bij een exact gelijke lichtsterkte. Er is een bepaalde tijdsduur ingesteld als maximum.... gaat de tijd die het kost om de C op te laden daar over heen.... dan gaat een ledje branden. Wat ik nu zie is dat als ik het proggie start het ledje eerst enorm gaat flippen (knipperen enzo) en daarna constant gaat branden. als hij eenmaal constant brand krijg jhe hem met een vuurtoren nog niet weer uit!
wie ow wie kan mij helpen met tips?
Wat moet die doen als die wel een tijd heeft gemeten? zie je dat aan een ander ledje? of heb je een lcd erop aangesloten?
Dat dat ledje blijft branden zodra het aan is geweest kan een softwarefout (lees programmeerfout) zijn. Een waarde vergeten 0 te maken, of voor eeuwig in een bepaalde routine blijven hangen, of iets in die richting.
Nee er is een bepaalde waarde vast gesteld voor de teller. laten we zeggen dat de maximum tijdsduur 100 ms. bedraagt. Gaat de oplaadtijd daarover heen dan gaat er een ledje bradne, anders gebeurt er niks. Hij blijft steeds tellen. Ik zal zeerbinnekort even de programmatuur posten, maar ik ben nu ook even aan het aanpassen.
wil je zeggen dat de waarde opgelagen in de timer.. die volgens mij in een filetje word opgeslagen niet op 0 wordt gezet?
[Bericht gewijzigd door Bernd op ]