Hallo Leute, so wie jeder Anfänger bastle ich natürlich auch eine DCF Uhr. )) Ich habe das jetzt softwareseitig fertig gemacht. In einem Simulator (Proteus) getestet, dort funktioniert es einwandfrei. Ich habe jetzt das ganz in Hardware aufgebaut (DCF_sch.PNG) und das funktioniert natürlich nicht. LED, was DCF Signal zeigen sollte blinkt irgendwie nicht regelmäßig und ich verstehe leider nicht, wo ich was falsch gemacht habe. DCF Modul ist auch ok, ich habe hier ein Arduino, das Ding kriegt sein Signal sauber. Kann mir bitte jemand sagen, wo mein Fehler ist??!
:
Bearbeitet durch User
Alex Wka schrieb: > LED, was DCF Signal zeigen sollte blinkt irgendwie nicht regelmäßig und > ich verstehe leider nicht, wo ich was falsch gemacht habe. Es ist schon erstaunlich, dass die überhaupt etwas tun, wo sie doch laut Schaltplan gar nicht am µC angeschlossen sind.
P.S.: Der Prozessor hängt ja überhaupt in der Luft, die Displays hast du auch nicht an die Versorgung angeschlossen, und vermutlich sind auch die HC595 auf diese stromsparende Weise verdrahtet. Was erwartest du bei so vielen Fehlern?
Wie sieht deine Spannungsversorgung aus? Stelle sicher, dass das GND in deiner Schaltung auch tatsächlich mit Erde verbunden ist (Beim Arduino passiert das durch USB-Leitung->PC-Netzteil->Schutzleiter)
Alex Wka schrieb: Ich geh mal davon aus, dass du die Versorgungsspannungen korrekt angeschlossen hast. > Kann mir bitte jemand sagen, wo mein Fehler ist??! Simpel. Du hast den Kardinalfehler aller Anfänger gemacht: Du hast zuviel Code auf einmal geschrieben, in der Annahme du würdest das beherrschen. Damit musst du anfangen: > LED, was DCF Signal zeigen sollte blinkt irgendwie nicht regelmäßig Das hier ... > Ich habe das jetzt softwareseitig fertig gemacht. ... tja, da hast du dir viel Mühe gemacht für nichts. Wenn deine LED, die den Signaleingang anzeigen soll, schon nicht das erwartete Ergebnis bringt, dann brauchst du auch hinten nach noch keine Auswertung machen. Erst mal musst du das regelmässige Pulsen ordentlich ins System kriegen. Solange das nicht der Fall ist, brauchst du dir um den Rest dahinter erst mal noch überhaupt keine Gedanken machen. Das hier ist dein erstes Programm
1 | #include <avr/io.h> |
2 | |
3 | int main() |
4 | {
|
5 | DDRA |= ( 1 << PA0 ); |
6 | |
7 | while( 1 ) { |
8 | if( PIND & ( 1 << PD2 ) ) |
9 | PORTA |= ( 1 << PA0 ); |
10 | else
|
11 | PORTA &= ~( 1 << PA0 ); |
12 | }
|
13 | }
|
und solange die LED nicht im Sekundentakt aufblinkt, mit erkennbar 2 unterschiedliche langen Brenndauern, solange brauchst du dir um den Rest noch überhaupt keine Gedanken machen. Software wird in Schritten entwickelt! Beginnend mit den ganz einfachen ersten Dingen. Man will so schnell es nur irgendwoe geht in einen Zustand kommen, in dem man erste Dinge testen kann. In der Kette Eingabe-Verarbeitung-Ausgabe fängt man entweder mit der Eingabe oder mit der Ausgabe an. Ausgabe deshalb, damit man seine Prüfwerte wo ausgeben kann. Die einfachste Ausgabe ist bei dir die, die auf einer LED was ausgibt. Damit wäre die einfachste Form der Ausgabe abgehakt. Als nächstes wird die Eingabe überprüft, ob sich die auch tatsächlich so verhält, wie man das erwartet. Und erst dann, wenn auch das korrekt ist, dann fängt man mit dem Verarbeitungs-Teil an, wobei man wieder nicht einen monolithischen Klotz auf einmal hinkleckst, sondern sich schrittweise vortastet! Tut man das nämlich nicht, dann steht man so wie du, mit einem Haufen Code da und hat keine Ahnung, wo man mit der Fehlersuche anfangen soll. Arbeitet man aber in kleinen Schritten und überprüft und testet jeden Schritt, dann kann man Probleme recht gut eingrenzen. Denn wenn im vorletzten Schritt noch alles in Ordnung war, im letzten aber nicht, dann kann das Problem nur irgendwie im Zusammenhang mit der letzten Codeänderung stehen. Sind diese Codeänderung aber nur ein paar Zeilen, dann ist das überschaubar, welche Programmteile man sich genauer ansehen muss. LED direkt ohne Vorwiderstand angeschlossen. Ts, ts. Keine Blockkondensatoren. Kein Widerstand am Reset. Es ist, als ob hier im Forum noch nie irgendwer nach einer Grundschaltung gefragt hätte. Es sind immer wieder die 100% gleichen Sachen.
:
Bearbeitet durch User
Alex Wka schrieb: > Kann mir bitte jemand sagen, wo mein Fehler ist??! Bei EAGLE solltest du dir im Schaltplan angewöhnen, i.a. nur rechtwinklig verlegte Leitungen zu verwenden und immer im 100mil-Raste (0,1 inch) zu zeichnen. Das gilt auch beim Anlegen von Symbolen in der Bibliothek für die Anschlüsse (Pins). Sonst nützen auch die (überflüssigen) grünen Punkte nichts (U1). Und lass mal den ERC über deine Schaltung laufen.
Versorge den DCF-77 Empfänger nicht direkt mit der gleichen Spannung, die auch der Mikrocontroller bekommt. Der DCF-77 ist eine analoge Schaltung die empfindlich auf winzige Störungen in der Versorgungsspannung reagiert. Das sollte wenigstens ein Tiefpass zwischen liegen, zum Beispiel aus einer 10mH Spule und einem Kondensator-Pärchen mit 10µF + 100nF. Oder du spendierst dem Funkempfänger einen eigenen Spannunsgregler. Weiterhin sollte der Funkempfänger (oder die Antenne) möglichst weit von allen anderen elektrischen Geräten entfernt sein. Ein 3 Meter langes Kabel kann dabei sehr hilfreich sein.
foo schrieb: > Der Prozessor hängt ja überhaupt in der Luft, Das ist doch klar, dass es an die Pins angeschlossen ist. Irgendwie wollte das Program das nicht machen. Simon S. schrieb: > Wie sieht deine Spannungsversorgung aus? Ich habe ein Netzteil, die man zwischen 3-12v (2A) einstellen kann. Karl Heinz schrieb: > Tut man das nämlich nicht, dann steht man so wie du, mit einem Haufen > Code da und hat keine Ahnung wie gesagt, ich habe das in einem Simulator getestet, von der Logik her sollte es passen, ich kann mir vorstellen, dass durch die Fehler, die ich jetzt im physikalischen Systeme krige, irgendwelche Effekte auftauchen, die ich nicht im Simulator hatte. Aber ich werde auf jeden Fall heute abends das ganze, wie du gesagt hast zu machen - also das Ganze erstmal vereinfachen und nach einander testen. Karl Heinz schrieb: > Keine > Blockkondensatoren. Kein Widerstand am Reset. Blockkondensator (100nF) zwischen +3v3 und GND habe ich erstmal eingebaut, aber Fehler konnte ich dadurch nicht beseitigen. Widerstand am Reset mache ich. Leute danke für die Hilfe, ich versuche heute abends erstmal diese Vorschläge zu realisieren.
Alex Wka schrieb: > foo schrieb: >> Der Prozessor hängt ja überhaupt in der Luft, > > Das ist doch klar, dass es an die Pins angeschlossen ist. OK. Das mag bei dir so sein. Aber so 'klar' ist das bei weitem nicht. Du glaubst gar nicht, was man hier im Forum im Lauf der Zeit so alles sieht. Trotzdem solltest du dir eine gewisse Sorgfalt aneignen. > wie gesagt, ich habe das in einem Simulator getestet, Ein Simulator operiert in einer idealen Welt. In einem Simulator sind alle Eingangspegel exakt auf dem Wert auf dem sie sein sollen, es gibt keine Spikes, der Prozessor arbeitet mit der Takfrequenz mit der er laufen soll, Rechteckpulse haben eine ideale Form. Die Realität sieht aber ganz anders aus. So wie ich das sehe, hast du noch nicht mal überprüft, ob du vom Modul vernünftige Pulse in den µC kriegst. Und das ist nun mal grob fahrlässig. Aber bitte. Es ist deine Zeit, die du verplemperst.
:
Bearbeitet durch User
> Schaltnetzteile können den Empfang stören.
Ich würde es umformulieren: Schaltnetzteile stören den Empfang!
Das Grundproblem ist aber ein anderes, Reinhard Mey sei zitiert:
"Ich übe den Fortschritt und das nicht faul, nehme zwei Schritt auf
einmal und fall aufs Maul."
Karl Heinz schrieb: > Ein Simulator operiert in einer idealen Welt. das ist mir klar, aber die Logik, die ich in Software programmiert habe sollte ja trotzdem funktionieren, ich meine z.B wenn PIND2 log. 1 hat, dann das und das machen. Sowas ist ja im Simulator und in der Schaltung gleich. Problem ist ehe, dass dieses "PIND2 log. 1" aus irgendeinem Grund in meiner Schaltung nicht geschaltet wird. Karl Heinz schrieb: > So wie ich das sehe, hast du noch nicht mal überprüft, ob du vom Modul > vernünftige Pulse in den µC kriegst. Und das ist nun mal grob > fahrlässig. Das habe ich schon überprüft und gesehen, dass es nicht sauber ankommt. Mir fehlen halt die Wissen, wie man sowas beseitigen kann und deswegen habe ich das hier geschrieben.
Hi,
>Blockkondensator (100nF) zwischen +3v3 und GND
Du versorgst das Modul also mit 3,3V.
Auf dem Ding ist eine 3,6V Z-Diode verbaut die dann nicht mehr wirksam
ist,
Das ist aber ganz wichtig weil auf Ub absolute Ruhe sein muss sonst
kommt da nur Grütze an Signal. Lange Rede kurzer Sinn .. Überbrücke die
3,6V ZD mit einer 2,5V ZD und ich denke es wird gehen.
Viel Erfolg, Uwe
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.