www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik ATmega8 funktioniert nicht richtig


Autor: Denny (Gast)
Datum:
Angehängte Dateien:
  • preview image for a.png
    a.png
    7,31 KB, 476 Downloads
  • preview image for b.jpg
    b.jpg
    163 KB, 525 Downloads
  • preview image for c.jpg
    c.jpg
    124 KB, 489 Downloads

Bewertung
0 lesenswert
nicht lesenswert
Hallo
Ich habe mir eine Schaltung mit dem ATmega8 aufgebaut.
(a.png und c.jpg)
Könnt ihr mir bestätigen, dass die Schaltung richtig ist?

Das Bild b.jpg zeigt meinen Aufbau. (Hat aber nichts mit dem ATmega8 zu 
tun.)
Der ATmega8 funktioniert nur manchmal. Und dann nur ein paar Sekunden.
Das Programm funktioniert.

Ich vermute mal, dass ein Kondensator nicht stimmt.

Autor: Otto (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Wenn Du L1 an der stabilisierten Versorgung zuschaltest, wird diese 
einbrechen. Die Lastversorgung sollte aus der unstabilisierten 
Versorgungsspannung betrieben werden. 1µF am Reset-Pin ist sehr viel.

Otto

Autor: Denny (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Otto schrieb:
> Wenn Du L1 an der stabilisierten Versorgung zuschaltest, wird diese
> einbrechen. Die Lastversorgung sollte aus der unstabilisierten
> Versorgungsspannung betrieben werden.

Oh das ist natürlich richtig!
Ich habe mich da beim Zeichnen vertan.
In Wirklichkeit ist die Spule an der Versorgungsspannung angeschlossen 
(10V).

Otto schrieb:
> 1µF am Reset-Pin ist sehr viel.
Was könnte das für Auswirkungen haben?? (Ich denke der Einschaltvorgang 
ist einfach länger)

Fällt euch noch etwas auf??

Danke!

Autor: Otto (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Richtig - der Reset dauert länger.

Es fehlt noch ein Elko am Reglereingang (ca. 1000µF/A) und einer am 
Reglerausgang (10-22µF).

Ich würde den Elko der Elektronikversorgung mit einer Diode entkoppeln, 
so dass die Last diesen Elko nicht entladen kann.

Autor: Michael Buesch (mb_)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Denny schrieb:
> Das Programm funktioniert.

Woher weisst du das?

Autor: Otto (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Auch würde ich mit 100nF-Kondensatoren direkt an den Versorgungspins des 
AVR nicht geizen.

Autor: guest (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Naja, einer reicht schon im Normalfall. Aber der sollte wirklich nicht 
mehr als ein paar mm vom AVR entfernt montiert werden. Es sieht aus als 
wären es eher ein paar cm.

Autor: Denny (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Michael Buesch schrieb:
> Woher weisst du das?

Der Magnet schwebt perfekt, wenn ich die Schaltung mit dem MyAVR MK2 
aufbaue.

guest schrieb:
> Aber der sollte wirklich nicht
> mehr als ein paar mm vom AVR entfernt montiert werden. Es sieht aus als
> wären es eher ein paar cm.

Das habe ich schon öfters gelesen, dass der nicht weit entfernt sein 
sollte.
Allerdings verstehe ich nicht wieso...
Kannst du mir das bitte erklären??

Autor: Denny (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Das Komische an der ganzen Geschichte ist, dass die Schaltung am Anfang 
(also vor ein paar Wochen) noch funktionierte.
Sie hatte nur selten einen Ausfall (Ungefähr nach 5 Minuten oder so 
spielte alles verrückt.)

Autor: Hc Zimmerer (mizch)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Aref mit Vcc zu verbinden ist im besten Fall sinnlos.  Wird die interne 
Referenz für den ADC verwendet, ist es ein Fehler.  Es gehört 
normalerweise mit einem C (gegen AGND) verbunden und sonst mit nichts.

Autor: Ronny (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
>guest schrieb:
>> Aber der sollte wirklich nicht
>> mehr als ein paar mm vom AVR entfernt montiert werden. Es sieht aus als
>> wären es eher ein paar cm.
>
> Das habe ich schon öfters gelesen, dass der nicht weit entfernt sein
> sollte.
> Allerdings verstehe ich nicht wieso...
> Kannst du mir das bitte erklären??

Das wurde schon dutzende Male durchgekaut hier, z.b.

Beitrag "100nF-Blockkondensator"
Beitrag "100nF zwschn Vcc, GND"

Autor: Denny (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Sorry für 3 Posts hintereinander...

Also ich habe den Quarz gewechselt:
Mit 3.6864MHZ funktioniert es nicht sehr gut.
Mit 6MHZ funktioniert es ohne Aussetzer. Allerdings ruckelt der Magnet 
beim Schweben ein wenig.

Woran kann das liegen!?

Autor: Dieter M. (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Bist Du sicher, dass Du eine 5V LED benutzt?
Falls es doch eine Normale ohne Vorwiderstand sein sollte, wird der Port 
des Atmel überlastet. Das kann auch zu merkwürdigen Effeten führen.

Autor: Denny (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Dieter M. schrieb:
> Bist Du sicher, dass Du eine 5V LED benutzt?
> Falls es doch eine Normale ohne Vorwiderstand sein sollte, wird der Port
> des Atmel überlastet. Das kann auch zu merkwürdigen Effeten führen.

1. Die LED ist nicht angeschlossen. (Ist nur für später vorgesehen.)
2. Es ist eine LED mit integriertem Vorwiderstand 
(http://www.conrad.de/goto.php?artikel=182404)

Also ich habe noch ein bissche getestet.
Manchmal schwebt der Magnet 2 Sekunden dann knallt er entweder nach oben 
oder nach unten.
Und das bleibt dann so bis ich die Versorgung wegnehme.
Wenn ich die Spannung dann an PB1 messe ist sie 5V bzw 0V.
(Wie gesagt an der Software liegt es nicht.)

Autor: Rolf Magnus (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
> Mit 3.6864MHZ funktioniert es nicht sehr gut.
> Mit 6MHZ funktioniert es ohne Aussetzer. Allerdings ruckelt der Magnet
> beim Schweben ein wenig.
>
> Woran kann das liegen!?

Oszillator-Fuses falsch eingestellt?

Autor: Denny (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Wie kann ich die einstellen??
Mit AVR-QuickProg habe ich ein Fuse-Bit aktiviert: Externen Quarz

Autor: Denny (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Auf dem MyAVR funktioniert der ATmega8 ja mit 16MHz wunderbar.
Das kann es also auch eigentlich nicht sein.

Autor: Denny (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hier ist mal ein kleines Video:
http://www.youtube.com/watch?v=YZHyDGO1XkI

Ich verstehe das nicht. Auf dem MyAVR funktioniert alles normal.
Bitte helft mir...

Autor: Michael Buesch (mb_)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Denny schrieb:
> Hier ist mal ein kleines Video:
> http://www.youtube.com/watch?v=YZHyDGO1XkI
>
> Ich verstehe das nicht. Auf dem MyAVR funktioniert alles normal.
> Bitte helft mir...

Das sieht fuer mich trotzdem nach Softwarefehler aus. Oder nach einem 
kompletten Zusammenbruch der Versorgunsspannung (oder Brownout, wenn 
brownout detection an it) und der uc macht dann einen Reset.

Autor: Otto (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Welche von den gegebenen Ratschlägen - ausser des m. E. sinnlosen 
Quarztausches - hast Du bereits durchgeführt ?

Wie hoch ist die Stromaufnahme der Gesamtschaltung und welchen 
Maximalstrom liefert Deine Stronversorgung ?

Autor: Jötze (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Die Art und Weise, wie Du den Hallsensor angeschlossen hast, schreit 
danach korrigiert zu werden.

Im Datenblatt des HAL815 steht alles groß und breit drin:

4. Application Notes
4.1. Application Circuit
For EMC protection, it is recommended to connect one
ceramic 4.7 nF capacitor each between ground and
the supply voltage, respectively the output voltage pin.
In addition, the input of the controller unit should be
pulled-down with a 4.7 kOhm resistor and a ceramic
4.7 nF capacitor.

Jetzt sieh' Dir noch das Bild 4-1 an, mach' das so und dann melde Dich 
wieder mit dem Ergebnis.

Auch wenn es schon gesagt wurde: 100nF an Vcc des AVR!


Grüße,
Jötze

Autor: Denny (Gast)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Also ich habe einen Kondensator von 1µF an direkt an Pin 7 und Pin 8 des 
ATmega8 gehängt (Vcc und GND).
Bringt aber nichts.
Ich habe momentan keinen 100nF Kondensator zur Hand.

Die Beschaltung des HAL815 hat bis jetzt immer super funktioniert.
Ich werde es später aber mit der anderen Schaltung versuchen.

Mein Netzteil liefert maximal 1.5A.
Die Spule zieht - bei 10V - knapp über 2A.

Aber die ist normalerweise nie unter Volllast und auf dem MyAVR 
funktionierte es auch immer.
Ich werde mir nächste Woche ein stärkeres Netzteil ausborgen...

Autor: Jötze (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Da wir über die Art und Weise der Verlegung des GND-Signals nichts 
wissen, könnte die Beschaltung des Sensors entscheidend sein.
Sie sorgt für Unempfindlichkeit gegenüber positiven und negativen Spikes 
auf Vcc und GND.
Vergiss nicht: Du schaltest eine Induktivität ...

Bei einer sternförmigen Masseführung (GND vom Spannungsregler, vom 
Low-Side-Schalter der Induktivität und von allem, was am uC hängt 
treffen sich an einem Punkt - da wird dann auch das Netzteil 
angeschlossen) wäre das nicht so empfindlich.
Aber das ist bei Dir sicher nicht so ausgeführt.

Autor: Hc Zimmerer (mizch)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ist eigentlich Aref immer noch gegen Vcc kurzgeschlossen?

Autor: Jötze (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Denny schrieb:
> und auf dem MyAVR
> funktionierte es auch immer.

Hast Du Dir mal die Beschaltung von AREF, AVCC und AGND des myAVR 
angeschaut?
Hier ist der Schaltplan:
http://www.myavr.info/download/produkte/myavr_boar...

Jetzt vergleiche mal dazu Deinen Schaltplan und nehme zur Kenntnis, dass 
das analoge Signal vom HAL815 die einzige Eingangsgröße ist.
Was passiert wohl, wenn die nicht zuverlässig ist?

Autor: Michael Buesch (mb_)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Denny schrieb:
> Mein Netzteil liefert maximal 1.5A.
> Die Spule zieht - bei 10V - knapp über 2A.
> Aber die ist normalerweise nie unter Volllast

Und unnormalerweise? Schonmal mit Messen versucht?

Autor: Denny (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Jötze schrieb:
> Bei einer sternförmigen Masseführung (GND vom Spannungsregler, vom
> Low-Side-Schalter der Induktivität und von allem, was am uC hängt
> treffen sich an einem Punkt - da wird dann auch das Netzteil
> angeschlossen) wäre das nicht so empfindlich.
> Aber das ist bei Dir sicher nicht so ausgeführt.
Ich verstehe nicht ganz...
Bei mir gibt es nur eine Masse.
An das Potential ist alles angeschlossen, was an die Masse gehört.

Hc Zimmerer schrieb:
> Ist eigentlich Aref immer noch gegen Vcc kurzgeschlossen?
Ja.
AREF muss doch an 5V, weil das die Referenzspannung für die AD-Wandlung 
ist!?

Jötze schrieb:
> Hast Du Dir mal die Beschaltung von AREF, AVCC und AGND des myAVR
> angeschaut?
> Hier ist der Schaltplan:
> http://www.myavr.info/download/produkte/myavr_boar...
>
> Jetzt vergleiche mal dazu Deinen Schaltplan und nehme zur Kenntnis, dass
> das analoge Signal vom HAL815 die einzige Eingangsgröße ist.
> Was passiert wohl, wenn die nicht zuverlässig ist?
Ja bei diesen Anschlüssen liegt wahrscheinlich irgendwo das Problem.

Manchmal funktioniert es für eine Sekunde.
Ich werde mir ein paar 100nF Kondensatoren beschaffen und sie da 
einbauen, wo es nötig ist.
Werde ich ja dann so machen müssen. :-(

Autor: Otto (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
> AREF muss doch an 5V, weil das die Referenzspannung
> für die AD-Wandlung ist!?

jain - AREF wird Controllerintern umgeschaltet und bekommt i. A. bur 
einen 100nF gegen GND.

Autor: Hc Zimmerer (mizch)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Wenn 5 V als Referenz verwendet wird, geschieht das üblicherweise 
Controller-intern, indem ADMUX passend gesetzt wird.  Eine externe 
Verbindung ist dazu nicht nötig.

Sollte das in Deinem Programm hier über die externe Verbindung von Aref 
mit Vcc laufen, wäre das etwas - ahem - unüblich.

Autor: Uwe (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi!
> Mit 3.6864MHZ funktioniert es nicht sehr gut.
> Mit 6MHZ funktioniert es ohne Aussetzer. Allerdings ruckelt der Magnet
> beim Schweben ein wenig.
>
> Woran kann das liegen!?

>Auf dem MyAVR funktioniert der ATmega8 ja mit 16MHz wunderbar.
>Das kann es also auch eigentlich nicht sein.

16MHz/6MHz=2,66..
Kann es sein das dein Proz. einfach nicht hinterherkommt weil der Takt 
zu klein ist?

> Mein Netzteil liefert maximal 1.5A.
> Die Spule zieht - bei 10V - knapp über 2A.
> Aber die ist normalerweise nie unter Volllast

Ist auch nicht unbedingt gesund.
10V/2A=5 Ohm*1.5A=7,5V, Das könnte für den 7805 etwas knapp werden, muss 
aber nicht.
Ich denke eher dein Takt ist zu klein.

Viel Erfolg, Uwe

Autor: Denny (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
OK ich habe die Reference-Eigenschaft jetzt auf Vcc umgeschaltet.
Ich werde AVCC dann mit einem Kondensator auf GND setzen.
Dann werde ich es nochmal testen.

Hier meine Bascom-Regelung:
'#>Informationen
 'Projektname: Schwebender Magnet
 'Datum: 2009-2010
 'Copyright und Hersteller: Weinderg Denny
 'Beschreibung: Dies ist der Source-Code zur Endarbeit "Schwebender Magnet".
'#<Informationen

$regfile = "m8def.dat"                                      'ATmega8
$crystal = 16000000                                         'Quarzfrequenz (Extern)

'#>Variablen
Dim Position As Integer                                     'Analoge Spannung des Hallsensors
Dim Pulsweite As Integer                                    'Die Pulsweite für den Spulenstrom
Dim Alteposition As Integer
Dim Positionsveraenderung As Integer                        'Die Veränderung der Spannung des Hallsensors während eines Zyklus
Dim Daempfung As Integer                                    'Die Dämpfung des Magneten, D
Daempfung = 150
Dim Offset As Integer
Offset = -50                                                'Damit man die Position des Magneten verstellen kann, P
'#<Variablen

'#>Konfiguration
Config Adc = Single , Prescaler = Auto , Reference = Avcc   'Analog-Digital-Wandler
Config Timer1 = Pwm , Pwm = 8 , Prescale = 1 , Compare A Pwm = Clear Down , Compare B Pwm = Clear Down       'Pulsweitenmodulation
'#<Konfiguration

'#>Hauptprogramm
S_start:
Do
Start Adc
Position = Getadc(0)                                        'Analoge Spannung des Hallsensors messen
Stop Adc
                                                             'Weil der Sensor die halbe Spannung in einer Richtung angibt
Position = Position - 512

Pulsweite = Position / 2                                    'Word-->Byte = /4 und Hallsensor = halbe Spannung = *2 => /2

If Position > Alteposition Then
Positionsveraenderung = Position - Alteposition             'Positionsveränderung berechnen
Positionsveraenderung = Positionsveraenderung * Daempfung   'Dämpfung hinzurechnen

Pulsweite = Pulsweite + Positionsveraenderung               'Pulsweite berechnen
Else
Positionsveraenderung = Alteposition - Position             'Positionsveränderung berechnen
Positionsveraenderung = Positionsveraenderung * Daempfung   'Dämpfung hinzurechnen

Pulsweite = Pulsweite - Positionsveraenderung               'Pulsweite berechnen
End If
Pulsweite = Pulsweite + Offset                              'Offset hinzurechnen

If Pulsweite > 255 Then Pulsweite = 255                     'Begrenzungen der Pulsweite einhalten
If Pulsweite < 0 Then Pulsweite = 0                         'Begrenzungen der Pulsweite einhalten

If Position < 0 Then                                        'Wenn der Magnet falsch rum hängt wird er Umgedreht
Compare1a = 255
Goto S_start
End If

Compare1a = Pulsweite                                       'Spulenstrom regeln

Alteposition = Position                                     'Alteposition setzen
Loop
'#>Hauptprogramm

Es handelt sich um eine gekürzte Version. Normalerweise kommt da noch 
die serielle Schnittstelle hinzu.

Autor: Karl Heinz (kbuchegg) (Moderator)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Du wirst das zwar sicherlich ausprobiert haben
Daempfung = 150

Positionsveraenderung = Position - Alteposition             'Positionsveränderung berechnen
Positionsveraenderung = Positionsveraenderung * Daempfung   'Dämpfung hinzurechnen
Pulsweite = Pulsweite - Positionsveraenderung

150?
Das kommt mir ehrlich gesagt aus dem Bauch heruas verdammt viel vor, bei 
einer 8-Bit PWM. Wenn man davon ausgeht, dass der ADC bei ansonsten 
konstanter(!) Eingangsspannung ständig um 1 bis 2 Werte um den richtigen 
Wert pendelt, so wirken sich alleine diese Variationen schon extrem auf 
die PWM aus.

Autor: Denny (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Es funktioniert auch mit 50.
Aber dann fängt der Magnet an zu schwingen.
Wie gesagt das Programm funktioniert.

Autor: Denny (Gast)
Datum:
Angehängte Dateien:
  • preview image for a.png
    a.png
    7,57 KB, 256 Downloads

Bewertung
0 lesenswert
nicht lesenswert
Hallo
Es funktioniert wieder alles!
Die Beschaltung von AVcc und AREF wurde geändert.
Außerdem funktioniert es nicht mit dem 16MHz Quarz.
Warum auch immer!?

Danke für die Hilfe!
Gruß Denny.

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.