Hey,
Ik wil graag een analoog signaal kunnen lezen met een PIC16F84 om aan de hand van dat wisselende analoge signaal weer opdrachten uit te voeren. het idee is om een bij een bepaalde drempelspanning een bepaalde opdracht uit te laten voeren door de micrprocessor.
Maar... hoe stuur ik dit analoge signaal naar de microprocessor. Nu heb je wel allemaal van die a/d converters, maar die maken er meestal een PWM signaal van. Maar ik heb geen flauw idee hoe ik dat moet lezen met mn microprocesor.
Heet iemand ideeen voor me??
Jeroen Boere
IF you can't convince them, then confuse them!
ja, je zou gebruik kunnen maken van een schmitt-trigger schakeling
wat hiet gebeurt is dat een analoog signaal omgezet word in een logisch signaal
de schmitt-trigger moet je gebruiken als het analoge signaal langzaam van spanningsniveau veranderd.
de hysteresis waarop de trigger schakeld kan bijvoorbeeld liggen van 2 tot 5 volts
Bastiaan
Bachelor of Engineering -- Microcontrollers AVR, PIC (asm, C), PC applicaties (C, C++), Webpages (HTML, CSS, PHP, SQL), Rail-infra engineer
Direct een analoge spanning aansluiten op een µC kan alleen als je als enigste doel hebt om het verschil tussen de logische niveau's (0v en 5v) te detecteren. Wil je meer dan dat dan moet je een µC gebruiken met ingebouwde A/D converter, de 16F84 heeft dit niet. Dus zul je een andere controller moeten gebruiken, maar.... wat ook kan is om zelf een A/D converter IC er tussen te plaatsen (signaal --> A/D converter--> µC).
En je kunt ook nog doen wat Jeroen hierboven vertelt. Zijn verhaal is alleen van toepassing voor het detecteren van 2 niveau's, wil je er 3 of meer dan kun je de simpele schmitt-trigger niet toepassen.
Ja ik snap het. Ik zal even vanaf het begin beginnen te vertellen. Ik ben bezig met en robot die naar het lichste punt in een kamer toe rijdt en dan zichzelf stilzet (zo min mogelijk stroom trekken dus) en dn dmv. een zonncel zn accu op gaat laden.
maar het lichte punt is nog erg abstract. Ik kan hem wel naar het lichste punt mogelijk laten rijden, maar als dat lichste niks voorstelt komt er toch te weinig spanning uit die zonncellen en heeft het toch geen zin om stil te gaan staan. Vandaar die drempel. Ik wil dan de spanning die uit de zonnecel komt dus in die a/d converter gooien.
Maar Bastiaan heeft wel gelijk. Ik wil eigenlijk meer gaan doen. Ik heb u een simpele OpAmp-schakeling die het licht netjes kan volgen, maar het LICHSTE punt in een kamer weet hij niet te herkennen, hij zal altijd door blijven rijden. Ik kan dan ook door middel van een iets andere schakeling hem laten kijken als hij een plek in gaat rijden met minder licht. Daar heb ik al eerder een topic over geopend. Ik kan dan een LDR voor en achter plaatsen, hem laten vergelijken en bingo!
Maar hoe moet ik dat nou doen met meerdere kanlen zeg maar. Ik wil graag de PIC16f84 gebruiken ivm de eenvoudigheid. Ik gooi er wel gewoon een a\d converter voor.
Tip's ideeen?? bedankt iig voor nu alvast.
Anoniem
Zet een spiegeltje vast op 45 % boven een vertikale open buis.
In de buis zet je een foto-transistor.
laad het spiegeltje tov de buis (of samen) rond-draaien
zoals een zwaailicht.
Bastiaan
Bachelor of Engineering -- Microcontrollers AVR, PIC (asm, C), PC applicaties (C, C++), Webpages (HTML, CSS, PHP, SQL), Rail-infra engineer
Op za 08-06-2002 00:29:50 schreef Bernd:
Maar hoe moet ik dat nou doen met meerdere kanlen zeg maar. Ik wil graag de PIC16f84 gebruiken ivm de eenvoudigheid. Ik gooi er wel gewoon een a\d converter voor.
Laat je analoge signaal dan idd naar een a/d converter lopen en sluit die digitale uitgangen pin voor pin aan op de PIC. Software matig kun je dan kiezen op wat voor niveau die wat moet gaan doen. Je kijkt dan constant naar de inputpinnen van de µC en gaat aan de hand van de binaire waarde het laten rijden. Softwarematig kun je dan het lichtste punt kiezen.
Het nadeel is alleen wel dat hoe meer je dat analoge signaal opsplitst in digitale kanalen hoe meer I/O je van de µC kwijtbent, want elk bit van de A/D converter heeft een pin aan de PIC nodig. Snap je wat ik bedoel?
Ja, maar zo'n a\d converter geeft toch een puls met een bepaalde frequentie?? Hoe kan ik dat lezen met mn microcontroller. Uit zo'n a/d converter komt t5och gewoon 1 signaal dat ik dat naar 1 poort van de microcontroller kan sturen?
het zou ook leuk zijn als je dio drempel aan zou kunne passen aan de hand van je software om zo ltijd het licht optimaal te benutten. Maar dan moet ik wel eerst weten hoe ik de uitgang van zo'n a/d coverte 'lees' met mn uC.
Bastiaan
Bachelor of Engineering -- Microcontrollers AVR, PIC (asm, C), PC applicaties (C, C++), Webpages (HTML, CSS, PHP, SQL), Rail-infra engineer
Een A/D converter maakt van een analoog signaal (afhankelijk van zijn referentiespanning) een digitaal signaal. Dit digitale signaal staat (bij benadering)continue op de uitgangen van de A/D converter. Stel je hebt een 4 bits A/D converter en de referentiespanning is 5v, dan wordt die 5v opgedeelt in 16 stukjes (4 bits is 16 verschillende mogelijkheden). Dit betekend dat de spanning tussen de +0v en +5v uit stappen van 0.31v bestaat. Bied je aan de A/D converter 2v aan, dan wordt dit decimaal 6, want er passen 6 gehele stukken van 0,31 in 2 volt. decimaal 6 is binair gezien 0110. En dit zal de A/D converter dus aan zijn uitgang afgeven. Je hebt voor dit voorbeeld dan dus 4 I/O pinnen nodig van je µC.
[Bericht gewijzigd door Bastiaan op ]
aha.... nou ik heb geen flauw idee wat voor vaag programma ik moet schrijven om zo'n binaire code op 4 poorten te moeten kunnen lezen.
heb je ook lager dan 4 bits... iets van 2 bits ofzo? En wat voor schaeling of IC heb ik dan nodig voor die converter. Met 2 bits kan ik misschien nog wel wat leueks verzinnen qua programmering met mn gebrekige JAL-kennis. 4 bits wordt vrij pittig ben ik bang.
bedankt voor de info!
Bastiaan
Bachelor of Engineering -- Microcontrollers AVR, PIC (asm, C), PC applicaties (C, C++), Webpages (HTML, CSS, PHP, SQL), Rail-infra engineer
2 bit A/D converters bestaan niet naar ik weet. En hoe dat softwarematig gaat moet je opzoeken door informatie bij elkaar te verzamelen. De tutorial voor deze site is bijna zover en dat zal niet lang meer duren. Daar kun je namelijk ook info uit halen over het programmeren.
weet iemand ene 4-bits a/d converter... het minimale dat ik kan vindnen is 8-bits... dan ben ik gelijk mn hele PIC kwijt aan die stomme converter 
[Bericht gewijzigd door Bernd op ]
Bastiaan
Bachelor of Engineering -- Microcontrollers AVR, PIC (asm, C), PC applicaties (C, C++), Webpages (HTML, CSS, PHP, SQL), Rail-infra engineer
Op ma 10-06-2002 14:07:53 schreef Bernd:
weet iemand ene 4-bits a/d converter... het minimale dat ik kan vindnen is 8-bits... dan ben ik gelijk mn hele PIC kwijt aan die stomme converter
Is niet waar, de PIC heeft 2 poorten, een met 8 in/uitgangen, en nog een poort met 5 in/uitgangen.
ja je hebt gelijk, maar ik wil mn PIC eigenlijk helemaal niet zoveel belasten met die d/a con. Ik wil de PIC voor ook voor andere dingen gaan gebruiken, en dan heb ik die poorten waarscijnlijk wel zo'n beetje nodig.
Bastiaan
Bachelor of Engineering -- Microcontrollers AVR, PIC (asm, C), PC applicaties (C, C++), Webpages (HTML, CSS, PHP, SQL), Rail-infra engineer
Op ma 10-06-2002 14:32:22 schreef Bernd:
ja je hebt gelijk, maar ik wil mn PIC eigenlijk helemaal niet zoveel belasten met die d/a con. Ik wil de PIC voor ook voor andere dingen gaan gebruiken, en dan heb ik die poorten waarscijnlijk wel zo'n beetje nodig.
Dacht ik al. Is idd lastig. FF wachten op anderen of die een oplossing weten.
Bastiaan
Bachelor of Engineering -- Microcontrollers AVR, PIC (asm, C), PC applicaties (C, C++), Webpages (HTML, CSS, PHP, SQL), Rail-infra engineer
Anoniem
oplossing 1: je neemt een "analog naar led bar van deze site" neem één 74147 en zet om naar 4 bit. Je heb nu resolutie van 1/10
Wil je de 4 bits volledig benutten neem dan een Graph bar ic voor 16 Leds.
De LED uitgang omzetten naar 4 bits.
Schakeling staat letterlijk in de datsheet van 74147. zie typical application http://www-s.ti.com/sc/ds/sn74ls148.pdf
oplossing 2: 8 bit A/D converter + multiplexer gebruiken;
dan je wel één extra lijntje nodig om de eerste of tweede
reeks bits te kiezen van het 8 bit getal.
Anoniem
Je kan natuurlijk maar 4 bits gebruiken van een 8 bit A/D
moet je ingangssignaal voeldoende laag blijft zodat de eerste bits laag blijven.
Anders zou 1000 0001 als 0001 gezien worden.
Bastiaan
Bachelor of Engineering -- Microcontrollers AVR, PIC (asm, C), PC applicaties (C, C++), Webpages (HTML, CSS, PHP, SQL), Rail-infra engineer
Op ma 10-06-2002 16:44:21 schreef palieter:
Je kan natuurlijk maar 4 bits gebruiken van een 8 bit A/D
moet je ingangssignaal voeldoende laag blijft zodat de eerste bits laag blijven.
Anders zou 1000 0001 als 0001 gezien worden.
Dat is wel een heel goed idee idd. Moet die even vertellen welk spanningniveau hij werkt en hoeveel niveau's hij wil detecteren.
Anoniem
Bastiaan, hoeveel niveau's ? is toch 0-15, hier heb je geen keuze met 4 bits.
Maar met 5 bits zou hij er 31 kunnen hebben. Maar misschien is dit niet zo handig voor het programma in de controller.
Bastiaan
Bachelor of Engineering -- Microcontrollers AVR, PIC (asm, C), PC applicaties (C, C++), Webpages (HTML, CSS, PHP, SQL), Rail-infra engineer
Op ma 10-06-2002 16:54:07 schreef palieter:
Bastiaan, hoeveel niveau's ? is toch 0-15, hier heb je geen keuze met 4 bits.
Maar met 5 bits zou hij er 31 kunnen hebben. Maar misschien is dit niet zo handig voor het programma in de controller.
Nee klopt, voor dat IC zijn het gewoon 16 niveau's maar aan de hand van wat hij wil kunnen wij zeggen hoe die dat moet doen.
bedankt voor alle info allemaal. Ik snap alleen niet waarom ik het signaal uit zo'n led-bar IC nog naar een demultiplexer zou gooien. Ik zou dan toch gewoon bijv. de middelste 4 uitgangen van die ledbar IC kunnen nemen?
Wat voor IC had je in gedachten.. iets van de LM39xx serie??
Om even terug te komen op bastiaans vraag. Ik denk dat ik voor de 6V ga met accu's en zonnecellen. 12V is eigenlijk iets handiger voor motorkeuze (aangezien ik het stroomverbruik onder de 400 mA wil houden), maar dan heb je helemaal niks meer aan je zonncellen qua stroomsterkte. Ik kan met de oppervlakte die ik nu mag vullen ongeveer 8.4V halen bij 170 mA... bij 12V zakt dat naar 18V en 70 mA
Dus qua oplaadtijd is het beter om voor 6V te kiezen.
Nou dan kan ik bijvoorbeeld de drempel stellen op 7V.
Het gaat niet zozeer om hoeveel niveaus.. het gaat meer om het feit of ik de niveaus aan de algemeen geldende lichsterkte an aanpassen gedeeltelijk. Anders heb je kans dat hij nooit eens wat viind en altijd maar door blijft zoeken, wat misschien niet nodig is. Daarnaast heeft hij zijn accu dan zo leeg.
Anoniem
Bernd, met 4 bits kan je 16 verschillende niveaus beheren.
Als je gewoon 4 uitgangen van de Led bar neemt heb je maar 5 mogelijkheden.
Als dit voldoende is prima, dan is dit de eenvoudigste oplossing en waarschijnlijk de goedkoopste.
Ik weet niet of dit gaat lukken maar ga hier eens kijken:
http://www.xs4all.nl/~sbolt/diz_sche.htm
In de paragraaf over licht wordt digitaal. Misschien kan je dat gebruiken. Ik weet wel niet dit gaat met die controller.