Forum: Mikrocontroller und Digitale Elektronik Mikrocontroller für Funktionsgenerator


von walking (Gast)


Lesenswert?

Hallo,

ich möchste einen Frequenzgenerator bauen der mir eine Rechteckspannung 
mit Amplitude 10V liefert und ein Pulsweitenverhältnis von 50/50 hat. 
Die Frequenz sollte über ein Poti variabel sein bis 1kHz. Außerdem soll 
die Frequenz und Amplitude auf einem Display angezeigt werden.

Meine Frage wäre nun welches Board und welcher Mikrocontroller hierfür 
für einen Einsteiger geeignet wäre. Am besten wäre eine Programmierung 
in C. Ich hab mich schon etwas ungesehen und bin auf ATmegas getoßen 
allerdings ist die Auswahl extrem groß...

Ich hoffe jemand kann mir helfen :)

Viele Grüße

von Karl H. (kbuchegg)


Lesenswert?

So wie ich das sehe, sind die Arduinos als billige Universalboards 
momentan eine der besseren Möglichkeiten.

Deine Anforderungen kannst du mit jedem x-beliebigen Board erfüllen. Von 
daher bist du an nichts gebunden. Arduino hat den Vorteil, dass das 
Problem das du zusätzlich einen Programmer brauchst, erst mal vom Tisch 
ist.

von walking (Gast)


Lesenswert?

OK danke schonmal.

Wie gesagt ich bin absoluter Einsteiger habe in der Uni schon den ein 
ode randeren mC programmiert, habe aber noch nie selbst alle benötigten 
SAchen zusammen gestellt.

Ich habe eben kurz nach Arduinos geschaut. Also würde ich beispielsweise 
das Arduino Duemilanove und dazu als Display das Arduino S65-Shield.

Was bräuchte ich dann zum Programmieren? ISr bei den Arduino Softwre 
dabei oder gibt es Freeware?

von walking (Gast)


Lesenswert?

Noch eine Frage zu den 10V.
Ich hab mir gedacht ich nehme 2 9V Batterien und schalte dann einen 10V 
Spannungsregler. Von dort dann mit 10V in das Board. Mit dem Board geb 
ich dann über einen PWM Ausgang das Signal an einen MOSFET welcher mit 
den 10V vom Spannungsregler verschaltet ist und dadurch das PWM Signal 
durchschaltet.

Ist die Idee soweit ok oder gibts nooch andere einfacherer 
Möglichkeiten. Das ganze soll übrigens mobil sein.

von Floh (Gast)


Lesenswert?

Von 9Volt direkt ans Board. Damit ist der Wirkungsgrad besser :-)

von Floh (Gast)


Lesenswert?

Ach ok, grad gelesen, dass du 10Volt Amplitude willst.

Dann würd ich eher ein Steckernetzteil mit 10Volt nehmen, denn aus 18V 
Batterie erst 10V und dann 5V (Arduino) zu machen, ist 
wirkungsgradtechnisch extrem mies -> Batterien sind schnell leer.
:-)

von Karl H. (kbuchegg)


Lesenswert?

Floh schrieb:
> Ach ok, grad gelesen, dass du 10Volt Amplitude willst.
>
> Dann würd ich eher ein Steckernetzteil mit 10Volt nehmen, denn aus 18V
> Batterie erst 10V und dann 5V (Arduino) zu machen, ist
> wirkungsgradtechnisch extrem mies -> Batterien sind schnell leer.
> :-)

Und das ganz speziell bei 9V Blockbatterien. Die sind sowieso keine 
Kapazitätswunder. Eher das Gegenteil :-)

von walking (Gast)


Lesenswert?

Ja das Problem ist,dass ich das Teil frei mitnehmen muss/will d.h. ein 
Kabel wäre ziemlich hinderlich...

von Karl H. (kbuchegg)


Lesenswert?

Dann nimm eine entsprechende Anzahl AA oder AAA Batterien (bzw. Akkus)

Diese 9V-Blöcke sind doch in der Praxis zu fast nichts zu gebrauchen. 
Die 150 oder 200mAh sind doch in 0kommaNix leergelutscht.

von Floh (Gast)


Lesenswert?

walking schrieb:
> Ja das Problem ist,dass ich das Teil frei mitnehmen muss/will d.h. ein
> Kabel wäre ziemlich hinderlich...

Wären Mignonbatterien eine Alternative?
Oder müssen das wirklich 10 Volt Rechteck sein oder gehen auch 9Volt?
:-)

von walking (Gast)


Lesenswert?

Also der Eingang von dem Adruino Duemilanova liegt ja laut Datenblatt 
zwischen 7-12V das wäre quasi egal. Das PWM Signal muss allerdings 10V 
Amplitude rechteck sein.

von Kluchscheißernder N. (kluchscheisser)


Lesenswert?

walking schrieb:
> Also der Eingang von dem Adruino Duemilanova liegt ja laut Datenblatt
> zwischen 7-12V das wäre quasi egal. Das PWM Signal muss allerdings 10V
> Amplitude rechteck sein.

- Wozu soll das Ausgangssignal überhaupt dienen?
- Wie genau muss die Frequenz stimmen?
- Wie belastbar muss denn Dein Ausgangssignal sein?
- Braucht es eine Gegentakt-Endstufe oder genügt ein Schalttransistor?
- Wie lange dauert ein Einsatz (wenige Minuten, viele Tage)?

Ohne die Anforderungen zu kennen, kann man weder Schaltung noch Software 
richtig planen.

Eine einfache Lösungsmöglichkeit:
- ATMega48 auf Lochrasterplatine, nur dann mit Quarz, wenn die Frequenz 
sehr genau stimmen muss.
- Stromversorgung aus 4 NiMH-Akkus.
- Aufwärtsregler zum Erzeugen der 10 Volt.
- Logiclevel-FET zum Zerhacken der 10 V.
- Spannungsteiler (Ausgangsspannung -> ADC-Eingang).
- LCD 16x2 zur Anzeige von Frequenz, Akkuspannung und Ausgangsspannung.
- ADC-Messung per Software so synchronisiert, dass immer in der 
Ein-Phase gemessen wird.

MfG

von walking (Gast)


Lesenswert?

Also das Bauteil soll dazu benutzt werden einer anderen Baugruppe(SPS 
Impulszähler) eine Frequenz vorzugeben um dann zu schauen ob die SPS das 
Signal richtig auswertet. Von daher kommt es auf die Spannung an, der 
Strom wird recht niedig sein...
Anforderung an die Genauigkeit sollte etwa bei 0,1% liegen.
Das Signal soll Low=0V und High=10V  haben und ein Puls/Pausenverhältnis 
von 50/50 besitzen. Die Amplitude muss nicht veränderbar sein, nur die 
Frequenz soll variabel sein (über Poti etc).

Einsatzdauer beträgt wenige Minuten um die Baugruppen zu testen.

Eine Gegentaktendstufe wird denke ich nicht benötigt, ein MOSFET sollte 
ausreichen oder?

Bisher habe ich mir ein Adruino Duemilanova + Display angeschaut weil es 
mir oben empfohlen wurde. Ich dachte die Spannungsversorung über 
Batterien herzustellen, diese dann mit einem Spannungsregler auf 10V zu 
regeln. Die 10V dann in das Board schicken und die Frequenz über einen 
PWM-Ausgang an einen Mosfet zu geben welcher ebenfalls an die 10V 
angeschlossen ist und dann mein Ausgangssignal schaltet.
Bin wie gesagt noch ein Einsteiger und bin von der Fülle von mC etwas 
erschlagen :)

von Karl H. (kbuchegg)


Lesenswert?

Da fällt mir gerade etwas ein.

Im Wiki gibt es einen Artikel über so eine Baugruppe, die deine 
Anforderungen sogar noch übertrifft. Sinus/Dreick forderst du nicht, von 
daher ist die analoge Ausgangsstufe für dich sicherlich Overkill. Aber 
was solls.

http://www.mikrocontroller.net/articles/Digitaler_Funktionsgenerator

von usuru (Gast)


Lesenswert?

> Im Wiki gibt es einen Artikel über so eine Baugruppe

Klar ist das Overkill, da ist es sicher einfacher, ein kleines 
PWM-Programm zu schreiben, einen Transistor als "Endstufe", Betrieb mit 
4 Lithium-Zellen und einem LDO für den µC.

von Karl H. (kbuchegg)


Lesenswert?

usuru schrieb:
>> Im Wiki gibt es einen Artikel über so eine Baugruppe
>
> Klar ist das Overkill, da ist es sicher einfacher, ein kleines
> PWM-Programm zu schreiben, einen Transistor als "Endstufe", Betrieb mit
> 4 Lithium-Zellen und einem LDO für den µC.

Wenn man es kann, dann schon.  :-)
Im Grunde ist ja auch ein Arduino für diese Aufgabe auch schon Overkill, 
wenn man jetzt nur die Leistungsdaten hernimmt :-)

von Kluchscheißernder N. (kluchscheisser)


Lesenswert?

walking schrieb:
> Also das Bauteil soll dazu benutzt werden einer anderen Baugruppe(SPS
> Impulszähler) eine Frequenz vorzugeben um dann zu schauen ob die SPS das
> Signal richtig auswertet. Von daher kommt es auf die Spannung an, der
> Strom wird recht niedig sein...

Naja, für die Spannung gibt es sicher auch ein weites Toleranzfeld.

> Anforderung an die Genauigkeit sollte etwa bei 0,1% liegen.

Dann sollte ein Quarz benutzt werden.

> Das Signal soll Low=0V und High=10V  haben und ein Puls/Pausenverhältnis
> von 50/50 besitzen. Die Amplitude muss nicht veränderbar sein, nur die
> Frequenz soll variabel sein (über Poti etc).

In welchem Bereich? Die 1 kHz sind klar, aber bei welcher Frequenz soll 
es losgehen?

Ein Poti kann über den ADC angeschlossen werden, hat dann aber nur einen 
"Stellbereich" von 1024 Stellungen (0 bis 1023), wobei es auch noch zum 
Jitter kommt, also der eingestellte Wert etwas zittert. Da ist es sicher 
günstiger, die Frequent über Tasten einzugeben. Im einfachsten Fall sind 
das 2 Tasten (Up/Down), die mit Autorepeat arbeiten können. Man kann den 
Aufwand auch erhöhen und eine Tastenmatrix zur numerischen Eingabe 
einsetzen.

>
> Einsatzdauer beträgt wenige Minuten um die Baugruppen zu testen.

Dann reicht es zu, das Gerät mit 4 NiMH-Zellen AA zu versorgen, also den 
AVR (ATMega48) direkt aus dem Akkus zu speisen und die 10 V mittels 
eines StepUp-Wandlers (z.B. mit MC34063A) zu erzeugen. Das ist günstiger 
als der Einsatz von Akkus mit höherer Spannung und verlustbehaftetes 
Herunterregeln auf 5 V für den Controller. Und das nicht nur von den 
Kosten sondern auch vom Energieverbrauch.

>
> Eine Gegentaktendstufe wird denke ich nicht benötigt, ein MOSFET sollte
> ausreichen oder?

Das denke ich auch, ein Lastwiderstand mit wenigen mA Laststrom zum 
verbessern der Ausschaltflanken schadet sicher nicht und lutscht die 
Akkus nicht übermäßig schnell leer. Ein Anschluss für Kopfhörer zum 
Hören der Frequenz könnte auch nicht schaden.

>
> Bisher habe ich mir ein Adruino Duemilanova + Display angeschaut weil es
> mir oben empfohlen wurde.

Ja, ich habe es verfolgt. Allerdings wussten die Tippgeber nicht, wie 
trivial Dein Vorhaben ist und haben etwas Reserve eingeplant.

Wenn Du es mit einem (nativen) AVR (also ohne gekauftes Dev-Board) 
realisieren willst, dann sparst Du zwar den Arduino, brauchst aber 
stattdessen einen Programmer. Und hier ist es wie überall: Wer keine 
Ahnung hat, muss zahlen (industrielle Produkte kaufen), wer sich selbst 
was baut oder ohne Hintergrundwissen billig kauft, kann Pech haben, dass 
es nicht funktioniert.

> Ich dachte die Spannungsversorung über
> Batterien herzustellen, diese dann mit einem Spannungsregler auf 10V zu
> regeln. Die 10V dann in das Board schicken und die Frequenz über einen
> PWM-Ausgang an einen Mosfet zu geben welcher ebenfalls an die 10V
> angeschlossen ist und dann mein Ausgangssignal schaltet.

Naja, der N-Kanal-LL-FET käme an GND und würde den Minus "zerhacken". 
Das ist aber kein Problem, weil das Gerät ja potentialfrei aus einem 
Akku versorgt wird.

> Bin wie gesagt noch ein Einsteiger und bin von der Fülle von mC etwas
> erschlagen :)

Das nimmt Dir auch keiner krumm. Das ging uns allen auch nicht viel 
anders.


Die Frage ist jetzt, was das Projekt für Dich persönlich bedeutet.

Machst Du es nur, weil Du diesen Signalgeber brauchst und es diesen in 
der von Dir benötigten Variante nicht im Handel gibt?
Dann suche Dir jemanden, der Dir das Ding auf Lochraster zusammenhäkelt, 
die Software dazu schreibt und Dir (gegen eine Aufwandsentschädigung) 
den Rohbau (funktionierende Platine mit LCD und Taster über Strippen) 
zuschickt, den Du dann liebevoll in ein Eigenbau-Gehäuse einbauen 
kannst. Falls Du niemanden findest, könntest Du Dich diesbezüglich an 
mich wenden.

Willst Du dieses Projekt aber als Einstieg in die Mikrocontrollerwelt 
nutzen, dann verweise ich auf das Tutorial dieser Seite:
http://www.mikrocontroller.net/articles/AVR-Tutorial
und falls Dir C liegt auch auf das GCC-Tutorial:
http://www.mikrocontroller.net/articles/AVR-GCC-Tutorial

Falls die Grundlagen der Elektronik auch noch fehlen, dann verweise ich 
auf das ElKo: http://www.elektronik-kompendium.de/

MfG

von Floh (Gast)


Lesenswert?

Wie wärs mit nem diskreten Frequenzgenerator ala NE555 oder 
Rechteck-Dreieck-OP?
Das könnte man je nach Bauteilauswahl direkt an 10(9) Volt laufen lassen 
und mit nem POti ansprechen.
Die Anzeige der Frequenz lässt sich ja über ne Skala am Poti ungefähr 
bestimmen.

ISt nur so ne Idee, aber damit würde der TS sich ne Menge Einarbeitszeit 
sparen. :-)

von walking (Gast)


Lesenswert?

So erstmal ein Dankeschön Kluchscheißender Consulter super Antwort!

Die 1023 Schritte für den Poti würden langen, damit ist ja der 1kHz 
Bereich abgedeckt(1kHz ist Obergrenze)

Vom Preisrahmen wäre der Arduino auf jeden Fall drin zumal es mir nicht 
darum geht "nur" den Generator zu haben, sondern der Lerneffekt steht 
für mich im Vordergrund.

Um jetzt auf der sicheren Seite zu sein habe ich mir diese Teile 
rausgesucht:
http://cgi.ebay.de/LCD-Keypad-Shield-%20-Arduino-Duemilanove--Atmega-328_W0QQitemZ260657285259QQcmdZViewItem?rvr_id=136540732738&rvr_id=136540732738&cguid=d6c58a9012a0a0aad2a0e5a0fff93534

wäre da alles dabei was ich benötige?(Poti und Kleinkram jetzt nicht 
berücksichtigt)

Dann habe ich gesehen, dass von es Adruino eine Software gibt um die mC 
zu programieren. Ist es auch möglich mit dem AVR-GCC Compiler, den du 
verlinkt hast, zu programieren?(müsste theoretisch ja gehen da ein 
ATmega auf dem Arduino sitzt)

von Karl H. (kbuchegg)


Lesenswert?

walking schrieb:

> 
http://cgi.ebay.de/LCD-Keypad-Shield-%20-Arduino-Duemilanove--Atmega-328_W0QQitemZ260657285259QQcmdZViewItem?rvr_id=136540732738&rvr_id=136540732738&cguid=d6c58a9012a0a0aad2a0e5a0fff93534
>
> wäre da alles dabei was ich benötige?(Poti und Kleinkram jetzt nicht
> berücksichtigt)


Ja.
Das ist einer der Gründe warum ich dir einen Arduino vorgeschlagen habe. 
Mit relativ wenig Geld hat man ein komplettes Entwicklungskit, inklusive 
"Programmer" (der im diesem Fall ein Bootloader ist)

> Dann habe ich gesehen, dass von es Adruino eine Software gibt um die mC
> zu programieren.

yep.

> Ist es auch möglich mit dem AVR-GCC Compiler, den du
> verlinkt hast, zu programieren?(müsste theoretisch ja gehen da ein
> ATmega auf dem Arduino sitzt)

Geht auch. In dem Fall brauchst du dann allerdings wieder einen externen 
Programmer und der Preisvorteil ist dahin.

Aber wenn sogar Künstler mit der Arduino eigenen Entwicklungsumgebung 
und Programmiersprache klarkommen, sollte das kein Problem sein. Zumal 
die Sprache anscheinend eng an C angeleht ist

http://www.robotfreak.de/blog/mikrocontroller/arduino-einfuehrung/16

von Paul Baumann (Gast)


Lesenswert?

Floh schrob:
>Wie wärs mit nem diskreten Frequenzgenerator ala NE555 oder
>Rechteck-Dreieck-OP?

Das wird ihm nicht reichen, denn Zitat:

>Anforderung an die Genauigkeit sollte etwa bei 0,1% liegen.

Ich denke, daß der Vorschlag vom "klugscheißenden Konsulter" für ihn
die beste Variante darstellt.

MfG Paul

von walking (Gast)


Lesenswert?

Floh schrieb:
> Wie wärs mit nem diskreten Frequenzgenerator ala NE555 oder
> Rechteck-Dreieck-OP?
> Das könnte man je nach Bauteilauswahl direkt an 10(9) Volt laufen lassen
> und mit nem POti ansprechen.
> Die Anzeige der Frequenz lässt sich ja über ne Skala am Poti ungefähr
> bestimmen.
>
> ISt nur so ne Idee, aber damit würde der TS sich ne Menge Einarbeitszeit
> sparen. :-)

Das hab ich mir auch schon überlegt. Nur kann man dann die Frequenz nur 
schlecht ablesen bzw schätzen. Das wäre allerdings die einfachste Lösung 
das stimmt.

Ich würde schon gerne einen mC benutzen. Mir kommt es nicht so sehr auf 
das Produkt selbst an sondern der Weg dorthin.

von Kluchscheißernder N. (kluchscheisser)


Lesenswert?

walking schrieb:
> So erstmal ein Dankeschön Kluchscheißender Consulter super Antwort!
>
> Die 1023 Schritte für den Poti würden langen, damit ist ja der 1kHz
> Bereich abgedeckt(1kHz ist Obergrenze)

Naja, mich würde der Jitter des ADC stören. Den bekommt man zwar mit 
einer Hysterese weg, die gewünschten 0,1% sind damit aber nicht so 
einfach erreichbar, schon alleine deshalb, weil übliche Potis mit einer 
Toleranz von 25% angegeben sind. ^^

>
> Vom Preisrahmen wäre der Arduino auf jeden Fall drin zumal es mir nicht
> darum geht "nur" den Generator zu haben, sondern der Lerneffekt steht
> für mich im Vordergrund.
>
> Um jetzt auf der sicheren Seite zu sein habe ich mir diese Teile
> rausgesucht:
> 
http://cgi.ebay.de/LCD-Keypad-Shield-%20-Arduino-Duemilanove--Atmega-328_W0QQitemZ260657285259QQcmdZViewItem?rvr_id=136540732738&rvr_id=136540732738&cguid=d6c58a9012a0a0aad2a0e5a0fff93534

Hab' ich mir mal angesehen, ist vom Preis her ja akzeptabel.

Mich würde daran nur stören, dass man damit das Arduino-Konzept 
aufgedrückt bekommt und die Flexiblität des nativen AVR-Einsatzes 
einbüßt.

Aber was ich da als gravierende Einschränkung sehe, kann für manch 
Anderen ein enormer Vorzug sein, braucht er sich doch nicht mehr in die 
Eigenheiten des Controllers und seiner Architektur einzulesen.

>
> wäre da alles dabei was ich benötige?(Poti und Kleinkram jetzt nicht
> berücksichtigt)

Naja, die 10 Volt hast Du damit aber auch noch nicht.

>
> Dann habe ich gesehen, dass von es Adruino eine Software gibt um die mC
> zu programieren. Ist es auch möglich mit dem AVR-GCC Compiler, den du
> verlinkt hast, zu programieren?(müsste theoretisch ja gehen da ein
> ATmega auf dem Arduino sitzt)

Da muss ich Dich enttäuschen, da fehlt mir die Kompetenz. Ich habe mich 
weder mit dem Arduino, noch mit seiner Entwicklumgsumgebung befasst. 
Auch C benutze ich nicht. Das GCC-Tutorial habe ich nur der 
Vollständigkeit halber erwähnt. Ich persönlich bevorzuge den direkten 
Einsatz kleiner AVRs und deren ressourcenschonende Programmierung in 
Assembler. Ich mag nicht mit Kanonen auf Spatzen schießen. Aber mach' 
was Du für richtig hältst, ich lege keinen Wert darauf, dass jeder meine 
Meinung teilt...

MfG

von walking (Gast)


Lesenswert?

Nochmal ein Dankeschön für eure Hilfe, ich hab mir jetzt erstmal den 
Arduino bestellt. Wie ich auf die 10V komme überleg ich mir noch, werde 
die Lösung über den Step-up Wandler allerdings im Hinterkopf behalten.

Ich glaube die Sache mit dem Poti und der Genauigkeit habe ich nicht 
richtig erklärt. Wichtig ist, dass die Frequenz die mein Generator 
ausgibt und die auf dem Display steht richtig von dem Impulsgeber der 
SPS aufgenommen und dort angezeigt wird. Wie genau jetzt das Signal 
meines Funktionsgenerators ist, ist ja dann nicht so entscheidend. 
Außerdem hab ich mit den 0,1% denke ich auch etwas zu genau gelegen^^

Wie auch immer, vielen Dank :)

von derRobert (Gast)


Lesenswert?

Hallo @ all.

Ich weis das dieses Thema nun seit über einem Jahr in der Versenkung 
ist. Aber da ich nun schon mehrfach, auf der Suche nach Vorschlägen für 
einen Frequenzgenerator mit dem Arduino, auf diese Seite gestoßen bin 
möchte ich jetzt mal einen Link zu einem recht interessanten Projekt 
hier Posten.
Ich denke für einfache sachen kann dies so ganz gut genutzt werden

http://iteadstudio.com/iforum/viewtopic.php?f=18&t=19

Gruß derRobert

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
Noch kein Account? Hier anmelden.