PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : MEGA8 wird heiß nach Anschluss von Maussensor ADNS-2610



Jörg9
14.07.2007, 07:27
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/zeigebeitrag.php?t=29551&highlight=adns2610 gestützt.

Meine Schaltung sieht folgendermaßen aus:
https://www.roboternetz.de/phpBB2/album_pic.php?pic_id=1744

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

Der Code (ebenfalls von Hacker übernommen) lautet:



$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

focobot
14.07.2007, 10:14
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ß.

Stone
14.07.2007, 11:19
Kanns sein das Vref < VMess ist? hab so mal nen tiny26 gekilled.

MfG Matthias

Jörg9
14.07.2007, 21:08
Hier ist der Bereich um die Schaltung herum. Mir schwant etwas: Fehlen da vielleicht noch Anschlüsse an AREF, GND und AVCC?

https://www.roboternetz.de/phpBB2/album_pic.php?pic_id=1745

linux_80
15.07.2007, 02:13
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 :-k
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 ?

Jörg9
15.07.2007, 09:01
Der ADNS bleibt kalt. Der Mega8 wird innerhalb von drei Sekunden so warm, dass ich mir die Finger verbrenne.

Jörg9
15.07.2007, 11:01
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.

uwegw
15.07.2007, 12:06
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.

Jörg9
15.07.2007, 14:48
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...

shaun
15.07.2007, 18:30
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.

Jörg9
15.07.2007, 18:42
Ja, inklusive meinem rechten Zeigefinger, den habe ich mir in den letzten zwei Tagen mindestens zwanzig mal verbrannt :-)))

Jörg9
15.07.2007, 19:05
Also, ich fange nochmal neu mit der Platine an. Da ich Anfänger bin, wäre ich Euch dankbar wenn Ihr mir ein kurzes Feedback über meine Schaltung geben könntet. Hauptsächliches Ziel ist es einen kleinen Regelkreis aufzubauen. Sensor: ADNS-2610, Motor (im Schaltbild die Spule) soll ein- und ausgeschaltet werden. Unterschied Schaltbild - Realität: Meine Versorgungsspannung liegt bei 16V.

Ich freue mich über jeden Tip.

Hier die Schaltung:

https://www.roboternetz.de/phpBB2/album_pic.php?pic_id=1746

dremler
15.07.2007, 19:14
nimm in zukunft ein kleines wachskorn von ner kerze....da musst du dir net immer die finger verbrennen ....oder flussmittel geht auch.....das korn dann auf den IC und anschalten...wenns schmilzt......strom weg...

molleonair
15.07.2007, 19:21
ich würde von pin 11 des atmega noch n 10K oder höher gegen gnd schalten damit der n-Fet auch bei abgeschalteten Atmega ordentlich sperrt und noch ne schutzdiode von GND nach Drain da Induktionspannung an der Spule Schaden anrichten könnte.
VCC würd ich noch mal anständig puffern mindestens 100uF
D2 würd ich eher vom 7805 Pin3 nach pin1 schalten
PS wo ist die Spannungsversorgung des MAX232

shaun
15.07.2007, 21:50
Die Diode von GND nach Drain bringt nur mäßig was, da dort ja eh schon eine ist - die Body-Diode vom MOSFET nämlich. Ich würde eher eine Freilaufdiode über die Last, also vom Drain zu +12V legen, Leistungsklasse: Motorstrom+x, für einen "Spielzeugmotor" reicht vielleicht eine 1A-Diode, 1-2A Motorstrom 3A-Diode usw. Die Diode darf gerne etwas schneller sein, wenn keine PWM gefahren wird - was ich wegen der dafür ungeeigneten MOSFET-Ansteuerung nicht hoffe - reicht aber auch eine 1N400x/1N540x.
Was soll die 4148 hinterm Spannungsregler? Leg lieber eine 1N400x vom Ausgang zum Eingang des 78ers, bewahrt Dich u.U. vor weiteren Ausfällen.
(ups, hat mein Vorschreiber ja auch schon gesagt - naja lass ich mal stehen, um die Wichtigkeit zu unterstreichen ;) )
Warum wird die LED für den Sensor mit 12V betrieben?

Jörg9
16.07.2007, 09:53
Hallo,

danke für die Tips:


von pin 11 des atmega noch n 10K oder höher gegen gnd schalten damit der n-Fet auch bei abgeschalteten Atmega ordentlich sperrt
Genau das Problem hatte ich, dass der FET beim Einschalten der Versorgungsspannung durchschaltete. Widerstand habe ich ergänzt.


VCC würd ich noch mal anständig puffern mindestens 100uF
Ok, ich habe einen Kondensator mit 220uF hinzugefügt. Die 100uF vor dem 7805 habe ich ebenfalls durch 220uF ersetzt.


D2 würd ich eher vom 7805 Pin3 nach pin1 schalten

Was soll die 4148 hinterm Spannungsregler? Leg lieber eine 1N400x vom Ausgang zum Eingang des 78ers
OK, ich habe die 4148 gegen eine Diode 1N4001 ausgetauscht und vom Ausgang zum Eingang des 7805 eingebaut. Diese Einbauweise erscheint mir logisch. Vorher hatte ich wohl einen Denkfehler.


PS wo ist die Spannungsversorgung des MAX232?
Hier:

https://www.roboternetz.de/phpBB2/album_pic.php?pic_id=1747


Ich würde eher eine Freilaufdiode über die Last, also vom Drain zu +12V legen
Freilaufdiode 1N5400 mit 3A habe ich eingefügt. PWM ist nicht geplant.


Warum wird die LED für den Sensor mit 12V betrieben?
Die LED ist sehr hell. Da mir bei meinem ersten Versuch der 7805 überhitzt ist nachdem ich den ADNS in Betrieb genommen hatte, gehe ich davon aus, dass die LED des ADNS zu viel für ihn war. Ich würde den 7805 gerne ohne Kühlkörper betreiben und ihn durch diese Massnahme entlasten.

Ansonsten bestelle ich mir einen 74HCT244 DIP um den Programmer wieder in Gang zu bringen. Außerdem ein Netzgerät mit 12V und 65 Watt, und einen neuen Lötkolben.

So sieht die Schaltung jetzt aus:

https://www.roboternetz.de/phpBB2/album_pic.php?pic_id=1749

Hubert.G
16.07.2007, 10:52
Das von dir gekennzeichnete ist die Ladungspumpe des MAX, die Stromversorgung liegt auf Pin 15 und 16, das musst du dir mit "invoke" holen im Eagle.

Jörg9
16.07.2007, 13:29
Was bedeutet "mit 'invoke' holen im Eagle" und was bedeutet "Ladungspumpe"?

Was passiert mit den Pins 6 und 7 des Max, ist deren Beschaltung ok?

shaun
16.07.2007, 13:37
Ladungspumpe ist die Schaltung im 232, die aus den +5V die benötigten +/-10V macht. Unbenötigte Pins vom MAX können offen bleiben, der hat Widerstände drin.
AREF des AVRs gehört NICHT an Vcc, der kann per Software daran geschaltet werden, oder mit einer externen Referenz gespeist, oder als Pufferausgang der internen 2,56V-Referenz dienen, aber bitte nicht mit Vcc verbinden, so kann man mit einem Softwarefehler die Hardware beschädigen!

Hubert.G
16.07.2007, 13:47
Du klickst auf das Icon "invoke" dann auf den MAX, da geht ein Fenster auf mit VCC und GND, das anklicken und OK, dann hast du auch die Stromversorgung des MAX im Schaltbild.
AREF gehört mit einem C 100n an GND.
Hubert

Jörg9
16.07.2007, 14:52
OK, AREF habe ich über einen Kondensator 100nF mit GND verbunden.

Mit invoke komme ich nicht klar.

Ich sehe die Pins zwar im Schaltbild, habe sie auch mit VCC und GND verbunden, aber auf dem Board hat sich nichts geändert.

Was muss ich tun nachdem ich die Pins im Schaltbild sehe? Beide Pins erscheinen gleichzeitig. Ich kann diese zwar verschieben und drehen, aber nicht am Gehäuse des Max anbringen...

So sieht das jetzt aus bei mir:

https://www.roboternetz.de/phpBB2/album_pic.php?pic_id=1750

Hubert.G
16.07.2007, 15:12
Das ist schon OK so, jetzt noch 100n dazu und es sollte alles passen. Die Kondensatoren zwischen VCC und GND gehören so nahe wie möglich zu dem jeweiligen IC.
Hubert

Jörg9
16.07.2007, 16:31
OK, ich habe einen Kondensator mit 100nF an den Pins VCC und GND vom Max ergänzt. Auf dem Board habe ich die Kondensatoren mit 100nF vorab per Hand geroutet, den Rest dann mit Autoroute. 3 Kabel sind übrig.

Hier die Schaltung:
https://www.roboternetz.de/phpBB2/album_pic.php?pic_id=1753

Und das Board:
https://www.roboternetz.de/phpBB2/album_pic.php?pic_id=1752

Alles OK so?

molleonair
16.07.2007, 16:42
schaut nicht hübsch aus aber sollte gehen ...

Aber mit der Zeit werden auch deine Pläne und Layouts ansehnlicher

so sah es bei mir auch mal aus :-)


Bedenke das wenn du mit dem Mosfet mal mehr Leistung Schalten willst dann erhöhe unbedingt die Leiterbahnbreiten ,diese sind bei dir generell unterstes minimum

shaun
16.07.2007, 21:44
Die Leiterbahnführung ist fast unbrauchbar, die Masse wild gemischt, keinerlei Trennung zwischen Leistung und Signal, alleine schon diese ewig lange Masseleiterbahn der Kondis am Quarz, dann die zum Source vom MOSFET - hier ist sternförmige Leitungsführung zur Masse der Versorgungsklemme gefragt. Mit der Zeit entwickelt man neben den Erfahrungen, was wie geht und was eben nicht, auch ein Gefühl dafür, wie man die Bauteile so platziert, dass dabei kurze oder zumindest vorteilhafte Leitungszüge herauskommen. Bis dahin musst Du halt üben :) Fang am besten mal mit breiteren Versorgungsbahnen und gezielter Masseführung an, für den Anfang mit der Prämisse: Masse ist die wichtigste Leiterbahn.

Jörg9
17.07.2007, 16:59
OK, erstmal danke für Eure Geduld.

Ich habe die Bauteile nochmal neu platziert und darauf geachtet, dass möglichst kurze Verbindungen zwischen den Teilen sind. Trotzdem sieht alles noch sehr chaotisch aus. Die Leiterplatte habe ich mit einer Potentialfläche überzogen.

Die Leiterbahnen sind jetzt dicker.

Im Google habe ich mal nachgesehen was "sternförmige Leitungsführung"bedeutet und wo sie eingesetzt wird. Leider bin ich nicht wirklich fündig geworden. Ich denke das ist noch ein ganz neues Thema.

Ich freue mich auch weiterhin noch über Verbesserungsvorschläge.

So siehts jetzt aus:

https://www.roboternetz.de/phpBB2/album_pic.php?pic_id=1756

molleonair
17.07.2007, 17:34
Hi Jörg ...

solang du den Autorouter nutzt kann da nix tolles bei rumkommen

aber gib nicht auf ,es wird

Jörg9
17.07.2007, 20:51
Ok, ich werde es nochmal mit Handarbeit probieren.

Folgendes habe ich aus Euren Kommentaren herausgelesen:

- Die Bauteile, die Leistung benötigen, werden mit breiteren Leiterbahnen möglichst von der Versorgungsklemme ausgehend versorgt. Das gilt vor allem für Masse und ich nehme an auch für Plus.

In der Mitte der Platine befindet sich ein "Massepunkt" von dem aus alle Bauteile die Masse brauchen versorgt werden, so dass sich eine sternförmige Struktur ergibt. Davon ausgenommen werden die Bauteile die Leistung brauchen (die ja an der Versorgungsklemme hängen). Diese sind also nicht Teil der sternförmigen Struktur.
Daraus dürfte sich dann auch eine Trennung zwischen Leistung und Signal ergeben.

Alle übrigen Leiterbahnen werden so direkt wie möglich verlegt.

So weit mein Verständnis von der Theorie. Liege ich da einigermaßen richtig? Mal sehen inwieweit sich das umsetzen läßt.

kalledom
17.07.2007, 21:22
Hallo,
ein Stern kann auch z.B. links oben sitzen. Will damit sagen, sternförmig bedeutet nicht von der Mitte aus, was ja auch nicht immer geht.
19 Zoll Platinen haben häufig oben Plus und unten GND.

Am Wichtigsten ist der GND. Der sollte auf möglichst kurzem Weg als dickste Leiterbahn zu den Bauteilen geführt werden.
Wenn z.B. ein FET mit hohem Strom den GND schaltet, dann sollte der GND nicht erst an den µC und von dort an den Source des FET geführt werden.
Jede Leiterbahn ist auch ein Widerstand und wenn jedesmal beim Einschalten des FET ein Spannungsabfall auf dem Stück GND von der Einspeisung bis zum µC entsteht, dann ist das nicht besonders günstig, weil der µC dann 'schwimmt' und die Eingänge evtl. nicht.
Legst Du aber vom Einspeisepunkt einen GND zum µC und einen extra GND zum FET, dann hast Du ein Problem weniger.

Wenn nach der Einspeisestelle noch ein Elko ist oder sogar noch eine Diode davor, dann geht es natürlich sternförmig vom Elko weg, weil die Spannungsversorgung an der Stelle am niederohmigsten ist.

Der Plus bekommt die zweit-stärksten Leiterbahnen, es sei denn, bis zu einer Stelle fließt genau so viel Strom, wie über den GND dorthin; dann wird diese Leiterbahn natürlich genau so breit.

Für Steuerleitungen nehme ich 12...16 MIL, für den Plus 25...50 MIL und für den GND 50...100 MIL als Leiterbahn.

Edit: Sternförmig bedeutet nicht, von der Einspeisung zu jedem Bauteil einen GND legen. Steuerbausteine sollten einen eigenen GND haben und die Leistungselektronik auch. Den Rest nach Gefühl.

shaun
18.07.2007, 08:36
Danke für die Beschreibung, Karl-Heinz, damit sollte Jörg was anfangen können.
@Jörg: sternförmig ist mitnichten neu, im Gegenteil, seit jeher werden elektronische Geräte da, wo es drauf ankommt, so verdrahtet, dass baugruppenweise von einem zentralen Massepunkt aus gearbeitet wird. Klar, nicht jedes Bauteil bekommt seine eigene Masse, aber wie Karl-Heinz schon schrieb, verhindert man so, dass der Strom, der von Baugruppe 1 (zB Dein Ausgangstreiber, oder die Stromimpulse für Deine superhelle LED) die Masse von Baugruppe 2 beeinträchtigt.
Und route das Ding bitte wirklich von Hand, dann siehst Du erst, was da alles fehlt!

Jörg9
18.07.2007, 19:38
Karl-Heinz, danke Dir auch von meiner Seite. Ich glaube ich habe es zusammen mit den Ausführungen von Shaun - ebenfalls danke - mittlerweile verstanden.

Heute habe ich ein paar Stunden per Hand an der Platine geroutet und dreimal neu angefangen. So langsam wirds was, macht sogar Spaß. Zwei Baugruppen sind schon fertig. Jetzt habe ich erstmal Elektronikpause, denn morgen gehts auf Reisen und am Montag wieder weiter. Schönen Abend, Jörg

Jörg9
31.07.2007, 16:00
So, die Platine ist nun fertig. Funktioniert alles, außer dem ADNS.

Ich weiß noch nicht warum. Der ADNS liefert permanent den Wert 108 sowohl für X als auch für Y...

Hier die Platine:

https://www.roboternetz.de/phpBB2/album_pic.php?pic_id=1792

Jörg9
31.07.2007, 16:16
Die Platine ist beim Ätzen ganz gut gelungen. Ich habe vor und nach dem Löten auch auf Kurzschlüsse geprüft und keine gefunden.

Die LED zum ADNS leuchtet permanent sobald ich die Stromversorgung einschalte. Ich vermute, dass das schon nicht ok sein könnte weil der ADNS ja zunächst mal initialisiert werden muss bevor er was tut (zum Beispiel die LED einschaltet). Ich stelle mir vor, dass die LED grundsätzlich aus sein sollte und erst beim Initialisieren softwareseitig eingeschaltet wird.

Wenn ich mir die Werte für X und Y mit dem Programm von Hacker (siehe weiter oben im Thread) ohne Umrechnung ausgeben lasse, erscheint permanent der Wert 108 sowohl für X als auch für Y.

Eine Linse zur Fokussierung habe ich mir auch besorgt und vor den ADNS gesetzt. Ohne Ergebnis.

Meine Hoffnung ist nun noch, dass der Kondensator, den ich verwende falsch ist. Aber es handelt sich definitiv um einen mit 2,2uF (METALL POLYESTER KONDENSATOR 2,2 UF Artikel-Nr.: 500893 - ZA von Conrad). Allerdings ist er ziemlich klobig. Und ich kann mir ehrlich gesagt nicht vorstellen, dass so ein Klotz in einer Maus, in der ein ADNS ja normalerweise wohnt, verbaut wird. Was noch auffällig ist, dass der Spannungsregler 7805 ziemlich heiß wird. Ich habe einen Kühlkörper angebracht um erst einmal zu gewährleisten, dass er seine Funktion behält. Die Ausgangsspannung ist mit knapp 5 Volt ok. Der ADNS wird auch, wenn nicht gerade heiß, relativ warm. Alle übrigen Bauteile sind kühl.


Was könnte da sein?

Jörg9
31.07.2007, 16:21
Eben habe ich vergessen, den Top-Layer einzublenden. Ich habe die roten Verbindungen mit Kabeln hergestellt.

https://www.roboternetz.de/phpBB2/album_pic.php?pic_id=1793

shaun
01.08.2007, 09:03
Richtigen 24MHz-Quarz verwendet? Der Sensor verlangt doch sicher nach einem Grundtonquarz, die meisten 24MHz-Quarze sind aber 3.OT

Jörg9
01.08.2007, 11:19
Als Quarz verwende ich einen HC-49/US-SMD. Wahrscheinlich sind die 24Mhz seine Grundfrequenz. Das lässt sich im Datenblatt nicht genau erkennen. Auch der Hersteller ist daraus nicht ersichtlich. Er hat wahrscheinlich einen Widerstand von 20 Ohm, 100 Ohm wären es in dem Fall, falls er im 3. Oberton schwingt.

Das Datenblatt des ADNS verlangt einen Quarz mit einer Impedanz von 50 Ohm. Es werden explizit Murata CSALS24M0X53-B0 oder TDK FCR24.0M2G vorgeschlagen. Im Datenblatt des Murata steht, dass das "X" in der Teilenummer "Thickness Expander Mode (3rd overtone)" bedeutet. Definitiv ist der in meinem Quarz verwendete Widerstand entweder um 30 Ohm zu gering oder, falls dieser im 3. OT schwingt, um 50 Ohm zu hoch. Das "A" in der Teilenummer des Murata bedeutet "No capacitance built in". Da die vorgeschlagene Schaltung im Datenblatt des ADNS keinen Kondensator zum Anschwingen für den Quarz vorsieht, schließe ich, dass die Kondensatoren zum Anschwingen im ADNS eingebaut sind. Das Datenblatt des ADNS sagt, dass OSC-IN eine Kapazität von 15pF hat. Für OSC-OUT ist keine Kapazität genannt. Mein derzeit eingebauter Quarz verlangt eine Kapazität von mindestens 10pF. Das dürfte also passen.

Spielt der Widerstand des Quarzes eine große Rolle? Kann man in Schaltungen, die einen Quarz im Modus 3. OT vorschlagen, alternativ einen verwenden, der im Grundton mit der gleichen Frequenz schwingt?

Mir ist noch etwas anderes aufgefallen:

Ich habe auf der Platine die LED und den 2,2uF Kondensator vertauscht. Außerdem habe ich bereits im Schaltplan den Kondensator mit GND statt mit VCC verdrahtet. Doppelt Falsch.

Ich glaube ich werde den Lötkolben nochmal anwerfen.

shaun
01.08.2007, 11:32
Letztlich hilft zur Klärung der Frage, ob der Quarz geeignet ist, nur messen, auf welcher Frequenz er im Einsatz schwingt.
Sag mal, ist das immer noch derselbe Maussensor, der seinerzeit den AVR heiss gemacht hat?

Jörg9
01.08.2007, 12:03
Nein, der gleiche, aber nicht der selbe :-)

Ich habe mir gleich zwei neue bestellt. Falls der jetzige auch wieder hinüber ist, habe ich noch einen in Reserve.

Jörg9
03.08.2007, 11:26
Jetzt habe ich die Bauteile richtig angeschlossen. Der ADNS funktioniert. Auch der Mega 8 u.s.w. Trotzdem: Jetzt läuft die RS232 Schnittstelle nicht mehr richtig. Es werden nur noch Sonderzeichen ausgegeben. Bevor der ADNS in Gang kam, funktionierte sie. Woher kann das kommen?

Taktrate für den Mega8 habe ich im Code schon richtig eingestellt (16000000). Auch die Budrate ist mit dem Terminal Programm auf 19200 abgestimmt.

Jörg9
03.08.2007, 15:35
RS232 funktioniert wieder. Eine Leiterbahn für die Stromversorgung des Max am Rand der Platine war doch etwas zu dünn geworden. Ich habe sie mit etwas Lötzinn "verstärkt".

Der ADNS funktioniert höchstwahrscheinlich auch: die LED wird hell wenn ich mit der Hand in die Nähe der Optik komme. Nur wird immer noch ständig derselbe Wert (108) sowohl für X wie für Y übermittelt.

Die Verbindungen zwischen ADNS und Mega8 auf der Platine scheinen OK zu sein.

hacker
03.08.2007, 18:03
Hört sich doch schon mal gut an. Am Wochenende bin ich höchstwahrscheinlich zu Hause. Dann kann ich dir auch ein wenig helfen bei Prolemen. Aber unter der Woche hab ich sehr wenig Zeit. Deshalb dauerd das bei mir immer ein wenig *g*.

Jörg9
04.08.2007, 12:59
Ja, ein Tip könnte helfen. Ich habe momentan wenig Ansatzpunkte wie ich weiter vorgehen könnte. Auf jeden Fall habe ich mal die Spannungen am ADNS gemessen:
- REFA nach Vcc 1,6V
- Vcc nach GND 4,5V
- OSC nach GND 1,5V
- SCK nach GND 7 bis 10mV
- SDIO nach GND 0 bis 5mV, machmal kurzzeitig bis 750mV

Was die Pins SCK und SDIO angeht: Die Spannungen schwanken im angegebenen Bereich.

Ich habe übrigens ein kleines Digitales Voltmeter, dass die Spannungswechsel erst nach ca. 0,5 Sekunden anzeigt.

Biometriker
18.01.2008, 07:46
Ich arbeite mit einem 16V Notebook-Netzteil und benutze einen 78S05 um die 15V auf 5 zu reduzieren.
Unabhängig vom Problem ist es besser, 15V erst auf 12 mit einem 78(S)12 und dann auf 5V mit dem 78(S)05 zu stabilisieren aufgrund der Verlustleistung und zugunsten der Lebensdauer.