Hallo, ich plane einen einen kleinen Regelkreis mit einem Arduino. Dabei wird ein Eingangssignal aufgenommen, welches vom Controller verarbeitet werden soll. Genauer soll ,für das Eingangssignal, der Controller eine Lampe einschalten und dann bei eingeschalteter Lampe durch eine Fotodiode über einen bestimmten Zeitraum (Mittelwert) ein Eingangssignal ermitteln. Dannach soll die Lampe wieder ausgehen und abhängig vom Eingangssignal, soll ein analoges Ausgangssignal(0-5V) ausgegeben werden. Im Prinzip soll das also eine Art Lichtschranke sein. Meine Frage ist, ob man das überhaupt mit einem Arduino machen kann und ob mein Programmtext die von mir gewünschten Aufgaben ausführen würde. Ich freue mich auf eure Antworten! Bertifx
Bertifx schrieb: > Frage ist, ob man das überhaupt mit einem Arduino machen kann und ob > mein Programmtext die von mir gewünschten Aufgaben ausführen würde. Die Funktion analogWrite ist NICHT das Gegenteil von analogRead! Die Funktion analogWrite erzeugte keinen analogen Spannungswert am Ausgang, sondern eine PWM-Frequenz, d.h. es wird ganz schnell zwischen +5V und GND hin und her geschaltet, mit einem vom PWM-Wert abhängigen Tastverhältnis. Damit kannst Du zwar beispielsweise eine angeschlossene LED in der Helligkeit regeln, aber nicht dadurch, dass die LED mehr oder weniger Spannung erhält, sondern dadurch, dass die LED 500 mal pro Sekunde für kürzere oder längere Zeit mit 5V versorgt wird oder nicht. Bei der Ausgabe eines analogen Spannungswertes kommt es drauf an, welchen Arduino Du meinst. Für die Ausgabe einer analogen Spannung benötigst Du einen DAC, das ist ein Digital-Analog-Converter. Die 8-Bit Atmega Arduino-Boards haben keinen DAC. Da muß externe DAC-Hardware drangeschaltet werden, damit es funktionieren kann. Z.B. selbstgebastelt: http://www.avdweb.nl/arduino/hardware-interfacing/simple-10-bit-dac.html Der Arduino DUE hat zwar DACs on board. Aber diese werden von der Arduino-Software nicht standardmäßig mit Arduino-Komfortbefehlen unterstützt, so dass Du die DACs entweder auf Registerebene selbst programmieren oder eine geeignete Third-Party-Library einsetzen müßtest.
Man kann aber auch ein PWM-Signal über einen Tiefpass glätten und so einen analogen Wert bekommen. Es kommt halt drauf an, wie genau es sein muss. Aber bei Arduino denke ich, dass es nicht allzu genau sein muss.
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.