- 3D-Druck Einstieg und Tipps         
Seite 1 von 5 123 ... LetzteLetzte
Ergebnis 1 bis 10 von 43

Thema: MEGA8 wird heiß nach Anschluss von Maussensor ADNS-2610

  1. #1
    Benutzer Stammmitglied
    Registriert seit
    22.01.2007
    Alter
    53
    Beiträge
    60

    MEGA8 wird heiß nach Anschluss von Maussensor ADNS-2610

    Anzeige

    Praxistest und DIY Projekte
    Hallo,

    ich möchte einen ADNS-2610 Maussensor an einen Atmel Mega8 anschließen. Ohne den ADNS funktioniert soweit alles.

    Nachdem ich den Maussensor in meine Schaltung integriert habe, wird der Mega8 innerhalb von 10 Sekunden sehr heiß.

    Bei der Konstruktion und Programmierung habe ich mich auf den Beitrag von hacker https://www.roboternetz.de/phpBB2/ze...light=adns2610 gestützt.

    Meine Schaltung sieht folgendermaßen aus:
    Bild hier  

    Die Leitung SDIO habe ich direkt an PD7 des Controllers angeschlossen, SCK an PD6.

    Der Code (ebenfalls von Hacker übernommen) lautet:

    Code:
    $regfile = "m8def.dat"
    $crystal = 16000000
    $baud = 19200
    
    Ddr_sck Alias Ddrd.6
    Ddr_sdio Alias Ddrd.7
    
    Port_sck Alias Portd.6
    Port_sdio Alias Portd.7
    Pin_sdio Alias Pind.7
    
    Declare Sub Adns2610_init()
    Declare Sub Adns2610_write_byte(byval Write_byte As Byte)
    Declare Function Adns2610_read_byte() As Byte
    Declare Sub Adns2610_write_operation(byval Address_byte As Byte , Byval Data_byte As Byte)
    Declare Function Adns2610_read_operation(byval Address_byte As Byte) As Byte
    
    Call Adns2610_init()
    
    Dim X As Integer
    Dim Y As Integer
    
    X = 0
    Y = 0
    
    Dim X_cm As Single
    Dim Y_cm As Single
    
    Dim Read_data As Byte
    
    Read_data = 0
    
    Dim Tmp As Byte
    
    Tmp = 0
    
    
    
    Do
    
    
       Read_data = Adns2610_read_operation(&H03)
    
       If Read_data > &H7F Then
    
          Tmp = &HFF - Read_data
    
          Incr Tmp
    
          X = X - Tmp
    
       Else
    
          X = X + Read_data
    
       End If
    
       X_cm = X * 0.00635
    
       Print " X: " ; X_cm;
    
    
    
       Read_data = Adns2610_read_operation(&H02)
    
       If Read_data > &H7F Then
    
          Tmp = &HFF - Read_data
    
          Incr Tmp
    
          Y = Y - Tmp
    
       Else
    
          Y = Y + Read_data
    
       End If
    
       Y_cm = Y * 0.00635
    
       Print " Y: " ; Y_cm;
    
    
    
       Waitms 500
    
    
    
    Loop
    End
    
    
    Sub Adns2610_init:
    
       Ddr_sck = 1
       Ddr_sdio = 1
    
       Port_sck = 1
       Port_sdio = 1
    
       Call Adns2610_write_operation(&H00 , &H80)
       Call Adns2610_write_operation(&H00 , &H01)
    
    End Sub
    
    Sub Adns2610_write_byte(byval Write_byte As Byte)
    
       Local I As Byte
    
       Ddr_sdio = 1
    
       For I = 7 To 0 Step -1
    
          Port_sck = 0
    
          Port_sdio = Write_byte.i
    
          Waitus 1
    
          Port_sck = 1
    
          Waitus 1
    
       Next I
    
       Ddr_sdio = 0
       Port_sdio = 0
    
    End Sub
    
    Function Adns2610_read_byte() As Byte
    
       Local I As Byte
    
       Local Data_byte As Byte
    
       Waitus 250
    
       For I = 7 To 0 Step -1
    
          Port_sck = 0
    
          Waitus 1
    
          Port_sck = 1
    
          Data_byte.i = Pin_sdio
    
       Next I
    
       Adns2610_read_byte = Data_byte
    
    End Function
    
    Sub Adns2610_write_operation(byval Address_byte As Byte , Byval Data_byte As Byte)
    
       Address_byte = Address_byte Or &B10000000
    
       Call Adns2610_write_byte(address_byte)
       Call Adns2610_write_byte(data_byte)
    
    End Sub
    
    Function Adns2610_read_operation(byval Address_byte As Byte) As Byte
    
       Call Adns2610_write_byte(address_byte)
    
       Adns2610_read_operation = Adns2610_read_byte()
    
    End Function
    Nachdem ich die Versorgungsspannung angelegt habe, schien der ADNS schon korrekt zu funktionieren: Die LED leuchtet, geht kurz danach wieder aus und leuchtet wieder wenn ich mit dem Finger über den Sensor fahre. Eine Linse habe ich bisher noch nicht integriert.

    Kann es sein dass zwischen dem Maussensor und dem Controller noch ein Bauteil fehlt?

    An der Schaltung von Hacker - die meinen Ausgangspunkt darstellt - ist mir aufgefallen, dass der Kondensator an REFA im Datenblatt zum ADNS-2610 nicht mit 1uF sondern mit 2,2uF vorgeschlagen wird. Könnte das der Grund sein?

    Grüße,
    Jörg

  2. #2
    Neuer Benutzer Öfters hier
    Registriert seit
    21.08.2004
    Beiträge
    27
    An der Schaltung von Hacker - die meinen Ausgangspunkt darstellt - ist mir aufgefallen, dass der Kondensator an REFA im Datenblatt zum ADNS-2610 nicht mit 1uF sondern mit 2,2uF vorgeschlagen wird. Könnte das der Grund sein?
    der Kondensator kann nicht die Ursache sein, Hitze entsteht durch Stromfluß (Verlustleistung). Ich tippe auf eine Überlastung der Ausgänge des AtMega's oder auf eine unsaubere Versorgungsspannung.

    edit: zeig doch mal den Plan um den Atmega, der wird ja schließlich heiß.

  3. #3
    Erfahrener Benutzer Begeisterter Techniker
    Registriert seit
    09.02.2005
    Ort
    München
    Alter
    39
    Beiträge
    389
    Kanns sein das Vref < VMess ist? hab so mal nen tiny26 gekilled.

    MfG Matthias

  4. #4
    Benutzer Stammmitglied
    Registriert seit
    22.01.2007
    Alter
    53
    Beiträge
    60
    Hier ist der Bereich um die Schaltung herum. Mir schwant etwas: Fehlen da vielleicht noch Anschlüsse an AREF, GND und AVCC?

    Bild hier  

  5. #5
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    22.05.2005
    Ort
    12°29´ O, 48°38´ N
    Beiträge
    2.731
    Hallo,

    AVCC und AGND muss man zumindest anschliessen, wenn man die Pins verwenden will, an denen auch die ADC-Eingänge sind, auch wenn man keinen ADC braucht.
    Wenn man den ADC nicht braucht, kann der AREF entweder an VCC, oder evtl. doch für spätere Erweiterung per Kondensator an Gnd. Wenn der offen bleibt schadet's glaub ich auch nicht.

    Hier mal nur Vermutungen:
    Ich denke aber das das nicht der Grund sein sollte warum der AVR warm wird
    Warm wird er eigentlich nur, wenn zuviel Strom durch die Pins laufen. Wenn's nur mit ADNS auftritt, evtl. mal kleine Widerstände in diese beiden Leitungen um hier einen evtl. Strom zu begrenzen.
    Evtl. werden auch die Ports des AVR nicht richtig initialisiert, sodass es erst möglich ist, das ein Strom fliessen kann.

    Der ADNS wird nicht warm ?

  6. #6
    Benutzer Stammmitglied
    Registriert seit
    22.01.2007
    Alter
    53
    Beiträge
    60
    Der ADNS bleibt kalt. Der Mega8 wird innerhalb von drei Sekunden so warm, dass ich mir die Finger verbrenne.

  7. #7
    Benutzer Stammmitglied
    Registriert seit
    22.01.2007
    Alter
    53
    Beiträge
    60
    Ich habe zwischen die Datenleitungen jeweils einen 1k Widerstand eingebaut. Kein Erfolg: Der Mega8 wurde immer noch heiß.

    Jetzt habe ich die beiden Leitungen gekapp... Er wird immer noch heiß. Bevor ich den ADNS in die Platine gelötet habe, hat der Rest funktioniert.

    Einen neuen Prozessor habe ich ebenfalls eingesteckt... Er wird heiß. Wahrscheinlich liegt es also nicht an der Software.

  8. #8
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    06.02.2005
    Ort
    Hamburg
    Alter
    38
    Beiträge
    4.255
    was passiert, wenn der Mega8 kein Programm enthält? Dann sollten sämtlichen Pins hochohmig sein. Wenn er dann immer noch kocht, ist irgendwas verpolt, oder es liegt ne negative Spannung an. Das Ganze riecht nach einem Lötfehler. Wahrscheinlich hast du beim Sensor einlöten irgendwo ne Brücke gebaut oder Lötzinn hingekleckert.

  9. #9
    Benutzer Stammmitglied
    Registriert seit
    22.01.2007
    Alter
    53
    Beiträge
    60
    Ja, das glaube ich mittlerweile auch.

    Ich werde die Schaltung neu aufbauen, denn ich habe folgendes herausgefunden:

    Ich arbeite mit einem 16V Notebook-Netzteil und benutze einen 78S05 um die 15V auf 5 zu reduzieren. Durch das Anschließen des ADNS scheint der Spannungsregler irgendwie in Mitleidenschaft gezogen worden zu sein. Möglicherweise liegt das an der sehr hellen LED, die der ADNS ansteuert. Es kann aber auch sein, dass ich beim Löten einen Fehler gemacht habe.

    Wie dem auch sei: Am Spannungsregler habe ich am Ausgang 16V gemessen und ihn dann ausgetauscht. Nach dem Austauschen war die Spannung wieder OK, aber trotzdem funktioniert nichts mehr. Außerdem wird der Spannungsregler heiß. Der LED für den ADNS habe ich dann einen größeren Widerstand vorgeschaltet um den Stromverbrauch zu reduzieren, was aber auch keinen Erfolg brachte. Obwohl ich auch den Controller ausgetauscht habe, kann der Chip nicht mehr identifiziert werden.

    Bei meiner neuen Schaltung möchte ich die LED, die vom ADNS ausgesteuert wird direkt mit 16V aus meiner Stromversorgung speisen um den Spannungsregler nicht unnötig zu belasten.

    Unsicher bin ich mir noch ob die Leitungen zwischen dem ADNS und dem Controller Widerstände benötigen...

  10. #10
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    17.04.2006
    Beiträge
    2.193
    Hast Du Deinen Programmer vielleicht mit gegrillt? In meinem steckt wie üblich ein HC244, der würde 16V auch nicht so toll finden. Immerhin sind im Originalentwurf des ISP-Programmers Schutzwiderstände vorgesehen, die haben wohl schon mit Leuten wie Dir gerechnet
    Insofern dürfte nun alles, was mal halbleitend war und an dem 78er hing geröstet sein.

Seite 1 von 5 123 ... LetzteLetzte

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •  

12V Akku bauen