Forum: Mikrocontroller und Digitale Elektronik Atmega Anwendungsfrage


von Rainer W. (heidegeist)


Lesenswert?

Moin zusammen,
ich bin neu in diesem Forum und bitte um Verständnis, das ich 
(vermutlich) etwas frage, was schon x-mal gefragt worden ist.

Grundsätzlich bin ich seit Jahrzehnten in der Elektronik zu Hause, aber 
mit den kleinen schnuckeligen AVR habe ich bisher keine Erfahrung 
sammeln können.

Ich habe nun folgende Aufgabe, die vermutlich sehr einfach mi einem AVR 
zu realisieren ist:

es gibt 2 Analogwerte (Spannungen), die nacheinander eingelesen werden 
sollen. Nacheinander deswegen, weil nach dem Einlesen der ersten Messung 
mittels eines digitalen Ausgangs eine (vorübergehende) Umschaltung des 
Stromkreises geschehen muß. Nach der Umschaltung (vermutlich mit kurzer 
Wartezeit) soll dann der Strom erneut gemessen werden.
Wenn beide Stromwerte (Spannungsfälle über einem Widerstand) bekannt 
sind, sollen in Abhängigkeit davon, welcher Stromwert der größere ist, 
per digitalen Output ein MOSFET Transistor geschaltet werden. Der 
Vorgang soll alle x Minuten wiederholt werden.

Es werden insgesamt ein analoger Eingänge und 3 binäre Ausgänge 
benötigt. Ok, vielleicht sollen noch 2 LED mit angesteuert werden für 
die schnelle Überprüfung, welcher Zustand dann gesetzt ist.

Frage nun: reicht ein Atmega8 dafür aus - ich denke eigentlich schon und 
so habe ich auch bereits ein Starterboard bei "myAVR" in der light 
Bausatzversion geordert.

Nicht ganz simpel sind wohl ist vermutlich die Programmierung der 
A/D-Wandler. Womit macht man das als Anfänger idealerweise?
Auf was ist bei der ADC-Programmierung zu achten?

Generell ist die Sache nicht zeitkritisch. Ich schrieb schon weiter 
oben, daß der Zyklus vermutlich alle 5 bis 10 Minuten stattfinden soll.

Danke Euch für Eure Hinweise!
Heidegeist

von Lehrmann M. (ubimbo)


Lesenswert?

Rainer W. schrieb:
> Grundsätzlich bin ich seit Jahrzehnten in der Elektronik zu Hause, aber
> mit den kleinen schnuckeligen AVR habe ich bisher keine Erfahrung
> sammeln können.

Das klingt nach jemandem der ein AVR-Tutorial machen muss.
http://www.mikrocontroller.net/articles/AVR-Tutorial
http://www.mikrocontroller.net/articles/AVR-GCC-Tutorial

Rainer W. schrieb:
> Ich habe nun folgende Aufgabe, die vermutlich sehr einfach mi einem AVR
> zu realisieren ist:

einfach ist relativ. Für jemanden geübten sicherlich - Anfänger 
überschätzen sich gerne. Aber lass uns mal schauen was du vor hast.

Rainer W. schrieb:
> es gibt 2 Analogwerte (Spannungen), die nacheinander eingelesen werden
> sollen.

Welche Größenordnung [V] und DC/AC

Rainer W. schrieb:
> Nach der Umschaltung (vermutlich mit kurzer
> Wartezeit) soll dann der Strom erneut gemessen werden.

soll jetzt Spannung oder Strom gemessen werden ? Vorhin hieß es 2 
Spannungen jetzt plötzlich Strom ...

Rainer W. schrieb:
> Es werden insgesamt ein analoger Eingänge und 3 binäre Ausgänge
> benötigt.

Ich nehme mal an du willst jetzt beides mal den Spannungsabfall über 
einem Shung (Widerstand) messen. Entweder schaltest du um oder du 
verwendest 2 AD Wandler welche wie ich hoffe jeder AVR an Bord hat.

Binäre Ausgänge gibt es nicht. Heißt logisch od. digitaler Ausgang. 
Binär ist ein Zahlensystem. -> Tutorial

Rainer W. schrieb:
> Frage nun: reicht ein Atmega8 dafür aus - ich denke eigentlich schon und
> so habe ich auch bereits ein Starterboard bei "myAVR" in der light
> Bausatzversion geordert.

Äääm du versuchst mit einem Porsche eine Schnecke zu überholen. Der 
Mega8 langweilt sich zu Tode. Es reicht dir der absolut kleinste Tiny 
aus den du finden kannst. Selbst der schläft 99% der Zeit und langweilt 
sich. Ein MEGA wäre hoffnungslos überdimensioniert.

Rainer W. schrieb:
> Nicht ganz simpel sind wohl ist vermutlich die Programmierung der
> A/D-Wandler. Womit macht man das als Anfänger idealerweise?
> Auf was ist bei der ADC-Programmierung zu achten?

Dazu musst du das Tutorial durchmachen. Ich gebe dir einen guten Tipp: 
Glaube nicht, dass du nicht den ganzen Zirkus mitmachen musst. Du musst 
bei Null anfangen und alles lernen. Nur einen Abschnitt zu lernen ist 
sinnlos. Alles was du brauchst steht im Tutorial das ich oben gelinkt 
habe. Wenn man nicht alle Grundlagen beherrscht fällt man schnell auf 
die Nase und man legt das Projekt frustriert in die Ecke.

Rainer W. schrieb:
> Generell ist die Sache nicht zeitkritisch. Ich schrieb schon weiter
> oben, daß der Zyklus vermutlich alle 5 bis 10 Minuten stattfinden soll.

Der AVR langweilt sich zu Tode. Es wäre zu überlegen, ob man nicht auf 
eine diskrete Schaltung umsteigt. Dann würde man sich einen Monat AVR 
Programmieren Lernen sparen. Wie gesagt gescheit lernen ansonsten 
scheiterst du kläglich.
#


In der Summe ein sehr gut zu machendes Projekt. Sehr schön für Anfänger. 
Nimm den kleinsten AVR den du finden kannst. Der reicht schon tausend 
mal aus.

von STK500-Besitzer (Gast)


Lesenswert?

Rainer W. schrieb:
> Es werden insgesamt ein analoger Eingänge und 3 binäre Ausgänge
> benötigt. Ok, vielleicht sollen noch 2 LED mit angesteuert werden für
> die schnelle Überprüfung, welcher Zustand dann gesetzt ist.

>Frage nun: reicht ein Atmega8 dafür aus - ich denke eigentlich schon und
>so habe ich auch bereits ein Starterboard bei "myAVR" in der light
>Bausatzversion geordert.

Ja.

>Nicht ganz simpel sind wohl ist vermutlich die Programmierung der
>A/D-Wandler. Womit macht man das als Anfänger idealerweise?
>Auf was ist bei der ADC-Programmierung zu achten?

Guck ins Tutorium!

>Generell ist die Sache nicht zeitkritisch. Ich schrieb schon weiter
>oben, daß der Zyklus vermutlich alle 5 bis 10 Minuten stattfinden soll.

Da kann sich der Controller zwischendurch schlafen legen...

von Rainer W. (heidegeist)


Lesenswert?

Moin zusammen,

vielen Dank für Eure prompten Antworten!

ich habe geschrieben, daß ich den Spannungsfall an einem Widerstand 
(sprich: Shunt) messen werde. Ich denke, daß damit die Frage geklärt 
ist.

Auch wenn ein Controller mit dieser Popelaufgabe nur zu einem geringen 
Teil ausgelastet, werde ich dennoch zunächst an der Atmel-Umsetzung 
festhalten. Sofern diese (erste) Umsetzung so funktionieren sollte, wie 
ich mir das vorstelle, dann würde ich einige solcher Module mehr 
benötigen und dann relativiert sich der Aufwand. Sollte sich im Laufe 
der Zeit herausstellen, daß eine Modifikation der Steuerung notwendig 
wäre, würde sich die AVR-Lösung vermutlich als günstiger darstellen als 
eine reine Hardwarelösung.

Die Ströme, die zu messen sind, liegen im Bereich zwischen 0,5A und rund 
8A. Ein Widerstand von bspw. 0,5 Ohm könnte in der Ruhezeit mit einem 
Power MOS überbrückt werden.

Wenn der Controller sich zwischendurch schlafen legen darf, ist mir das 
auch recht... bei dem Stundenlohn :-)

Bliebe die Einarbeitung in die Programmierung und das könnte die 
Hemmschwelle sein...

Tschüss
Heidegeist

von Lutz (Gast)


Lesenswert?

Rainer W. schrieb:
> Sollte sich im Laufe
> der Zeit herausstellen, daß eine Modifikation der Steuerung notwendig
> wäre, würde sich die AVR-Lösung vermutlich als günstiger darstellen als
> eine reine Hardwarelösung.
> Bliebe die Einarbeitung in die Programmierung und das könnte die
> Hemmschwelle sein...
Bei Null anfangen ist sicherlich anstrengend, aber mit 
elektrotechnischem Grundwissen deutlich leichter als ohne. Nimm das o.g. 
AVR-GCC-Tutorial durch, und Du bist auf dem richtigen Weg. Das Gelernte 
kannst Du später anderswo verwenden und ausbauen; das ist eindeutig 
flexibler als eine Hardwarelösung. Und für Detailfragen war das Forum 
hier schon immer gut.

von Rainer W. (heidegeist)


Lesenswert?

Moin Lutz,

ich sehe das genau so, wie Du. Ich werde es versuchen mit dem Atmos und 
es findet sich sicherlich eine Hilfestellung hier im Forum, wenn es 
klemmen sollte.

Tschüssi
Rainer

von Hannes L. (hannes)


Lesenswert?

Noch ein Tip zur Auswahl des richtigen AVRs:

Die ADCs der verschiedenen Typen sind unterschiedlich ausgestattet. Ein 
Mega8 hat z.B. eine interne Referenz von 2,5 V, ein (pinkompatibler) 
Mega48 hat aber eine interne Referenz von 1,1 V. Da Du Spannungsabfälle 
über Shunts messen willst, ist eine kleine Referenz besser.

Schau Dir mal den Tiny26 (und seine Nachfolger 261/461/861) an, die 
haben Gain im ADC. Ein Tiny26 mit Differenzmessung und Gain 20 braucht 
z.B. 128 mV für Vollausschlag (2,56 V interne Referenz und Gain 20). 
Damit kann man den Shunt recht niederohmig halten, was auch die Verluste 
minimiert.

Das Programmieren des ADC ist übrigens nicht das Problem, ist er einmal 
initialisiert, arbeitet er autark im Hintergrund. Man kann dann 
jederzeit mittels einfachem I/O-Zugriff seinen zuletzt gewandelten Wert 
auslesen.

Solltest Du bisher mit keinerlei Programmiersprache in Berührung 
gekommen sein, so halte ich Assembler für das Verständlichste. Kannst Du 
bereits etwas C, dann solltest Du versuchen, die Sache mit mit C 
anzugehen. Hast Du bereits etwas BASIC-Wissen, so solltest Du Dir 
Bascom-AVR mal ansehen. Aber unabhängig von der Programmiersprache 
solltest Du Dir unbedingt die Datenblätter der in Frage kommenden AVRs 
ansehen, denn ohne Wissen über die "Eingeweide" wirst Du die gegebenen 
Möglichkeiten nicht ausschöpfen können.

...

von Peter D. (peda)


Lesenswert?

Da Du große Ströme messen willst, solltest Du besser einen AVR mit 
Verstärker vor dem ADC nehmen, z.B. ATtiny25 oder ATtiny24.


Peter

von Rainer W. (heidegeist)


Lesenswert?

Hallo zusammen,

vielen Dank für Eure konstruktiven Posts!

Die Sache mit der Wahl des "richtigen" AVR (aufgrund der ADC-Thematik) 
finde ich interessant. Bisher hatte ich die Idee, den Shunt in der Zeit, 
wo nicht gemessen wird, durch einen MOS-Transen zu überbrücken. Da gibt 
es einige, die 30mOhm haben... mal schauen.

BASIC- und Assembler-Kenntnisse sind aus den guten alten Zeiten mit 
meinem "Brotkasten" (Commodore C64) noch gegeben. Der hatte damals gute 
Dienste in Form einer Heizungs-/Raumtemperaturregelung geleistet. Der 
6510- (respektive 6502-Prozessor) ist zwar etwas anders, aber 
prinzipiell ist das auch Assembler. Ich denke, ich werde mich da wieder 
reinfinden mit der Zeit.

Bis die Tage
Rainer

von Rainer W. (heidegeist)


Lesenswert?

Moin zusammen,

gestern habe ich den Atmel-Kit zusammengelötet, der auf Anhieb lief. Der 
Set von MYAVR war für rund 19EUR incl. weiterer Kleinteile und Porto zu 
haben und dafür ist das sehr attraktiv, zumal der Kit sehr gut gemacht 
ist!

Danach kam die "harte Phase" und ich mußte mich mit dem Programmieren 
des ATMEL auseinandersetzen. Sehr geholfen hat der kleine, lockere 
BASKOM-Kurs http://halvar.at/elektronik/kleiner_bascom_avr_kurs/ von 
Gerold Penz!
Damit habe ich dann gestern soviel Wissen aneignen können, daß ich das 
gewünschte Programmchen schon darstellen konnte.

Der Tip von Hannes wg. BASCOM war goldrichtig! Die Demoversion reicht 
mir voll und ganz. Programmiert habe ich den ATMEL per USB mit dem myAVR 
PROGTOOL. Also die gesamte Software war kostenlos zu haben.

Die notwendige Hardware (u.a. 2 MOSFET-Transen, Spannungstabi) sind auch 
schon in Arbeit. Leider bin ich die ganze Woche beruflich unterwegs. Ich 
denke, daß der erste richtige Probelauf am kommenden Wochenende angehen 
kann.

Danke nochmals an alle für ihre Hilfestellung!
Heidegeist

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.