Spannung - Frequenz - Umsetzung ( U - f - Umsetzung)

Gast #319443
Lesenswert?

Hallo,

ich brauche für ein Projekt eine Spannungs-Frequenzumsetzung. Ich will
eine analoge Spannung mit einem ATMega8 oder ATtiny26 am ADC einlesen,
und dann an einem Ausgang eine Frequenz ausgeben, die direkt
proportional zur eingelesenen Spannung ist: z.B. 0V entspricht 1000 Hz,
3V entspricht 2000Hz.
PWM scheidet aus technischen Gründen leider aus.

Nun meine Frage: Hat jemand so ein Problem in Assembler schon einmal
gelöst? Dabei geht es mir nicht um das einlesen (ist ja kein Problem),
sondern viel mehr darum, wie ich die U - f - Umsetzung Software-mäßig
realisiere.
Für ein Grundgerüst oder nützlichen Hinweisen wäre ich sehr dankbar.

Noch ein Hinweis: Die Pulsdauer der Frequenz sei konstant, nur eben der
Abstand der Pulse sei von der Spannung abhängig.

Vielen Dank für die Tipps.

Gruß
Jan Purrucker
Gast #319445
Lesenswert?

Das mit dem 555 wird vermutlich wenig Linearität haben.
Es gibt auch spezielle ICs dafür.
Mit einem µC geht das ebenso gut.

Du kannst dafür einen PWM-Ausgang verwenden, nur dass Du statt des
Längen-registers das Modulo-Register veränderst, dann hast Du konstante
Ein-Dauer.
Formeln:
f= 1 / (highdauer + lowdauer)
lowdauer = 1/f - highdauer (brauchst Du nicht)

#define clock = 8000000L   //z.B. 8MHz  L:32-bit!
#define highdauer = 1234  //gewünschte High-Dauer
#define f_offset 1000
#define lin_faktor 1234  //in Promille, da hernach /1000
longint f;
f = f_offset + adc;   //oder f=f_offset+ (lin_faktor*adc/1000)
PWMmodulo  = clock / f;   //evtl. Prescaler beachten
PWMhigh = highdauer;

ungeprüft, ich kenne die PWM-unit des AVR nicht
Gast #319448
Lesenswert?

Hallo Profi,

das ich die PWM des yC nehmen kann ist schon einmal ein guter Tipp.
Leider bräuchte ich die U - f - Umsetzung genauer. PWM hat beim ATMega8
und beim ATtiny ja nur 8bit (=256 Stufen). Ich bräuchte aber eine
Auflösung von etwa 1000 Schritten.
Vielleicht kann mir hier jemand mit einem Assembler-Code Vorschlag
weiterhelfen, da ich (bis jetzt) C nicht sehr verstehe.
Vielen Dank für weitere Anregungen.

MfG
Jan Purrucker
Gast #319456
Lesenswert?

>und dann an einem Ausgang eine Frequenz ausgeben

Bitte genauer: Sinus, Rechteck, Dreieck, Rampen, Strohhalme, Handtücher
? Wenn's was anderes ist wie Rechteck wird vermutlich DDS nicht
verkehrt sein.
Eine Lösung des Problems hängt sehr von der Vorgabe ab...

>PWM scheidet aus technischen Gründen leider aus.
Warum ? Schreib mal mehr dazu, vielleicht meinst du das nur...

Gruß
Stefan

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren