PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : DCF an CCRP5



solo
06.12.2005, 12:20
Also ich hab ein DCF-Modul an meinen Rp5 Roboter von Conrad montiert.

Jetzt stellt sich mir die große Frage: "Wie stelle ich die korrekte Zeit am auf dem LCD da?" Gibts vielleicht schon ein Programm von jemandem?

Gruß Solo

solo
06.12.2005, 12:25
Hier mal eins für die C-Contol 1(Grundrobby) als *.bas

https://www.roboternetz.de/phpBB2/dload.php?action=license&license_id=1&file_id=64

Vielleicht hat einer noch ein ordentliches für die C-Control 2?

Dirk
07.12.2005, 19:50
Hallo Solo,

ich nehme an, Du hast wie ich die CC2 auf dem RP5??
Hier ein Codeschnipsel zum Anzeigen der Uhrzeit:


ccrp5.getRTC(); //CC1-Uhrzeit lesen
lcdext.clear();s="";
str.putstring(s,"RTC1: ");
lcdext.print(s);
lcdext.time(1);
ccrp5.getRTCDATE(); //CC1-Datum lesen
lcdext.line(2);s="";
if system.year() == 2097 //CC1-Startdatum ohne DCF: 1.1.xx97
{//Kein DCF-Empfang:
str.putstring(s,"DCF not active!!");
lcdext.print(s);
}
else
{//DCF aktiv:
str.putstring(s,"DATE: ");
lcdext.print(s);
lcdext.date(1);
//Zu jeder vollen Stunde DCF neu anfordern:
if system.minute() == 0 and system.year() != 2097
{system.setdate(2097,1,1); //CC2-Datum auf CC1-Startdatum setzen
ccrp5.setRTCDATE(); //CC2-Datum (1.1.97) in CC1 übertragen
}
}


Du kannst bestimmt was damit anfangen. Bei meinem Robby ist der DCF-Empfänger an die CC1 angeschlossen. Der Code nutzt das Modul ccrp5.c2 ab Version 2.2.

Gruß Dirk

jonas
09.12.2005, 13:54
mal ne ganz andere frage: so weit ich weiß kommt das dcf signal seriell, oder? kann ich die dcf antenne einfach an die serielle schnittstelle z.B. über nen max an nen atmega8 hängen?

solo
09.12.2005, 16:11
Danke für den Code!
Leider klappts nicht wenn ich ihn direkt in eine c2p schreibe! Soll ich ihn irgendwo in eine der demo.c2p vom ccnet kopieren? Die benützt auch den Treiber ccrp5.c2.
Meine invertiertes DCF-Signal hab ich auf der Experementierplatine auf den Anschluss Y328 angelötet, welcher zu Frq 1 auf der CC2 führt.
Wo schließt man den das DCF-Modul am Basisroboter an?

Gruß Solo

Dirk
09.12.2005, 19:25
Hallo Solo,


Meine invertiertes DCF-Signal hab ich auf der Experimentierplatine auf den Anschluss Y328 angelötet, welcher zu Frq 1 auf der CC2 führt.

Da habe ich mein DCF-Modul auch angelötet!
Aber: Y328 auf der Experimentierplatine führt zum Freq-Eingang der [highlight=red:f1f7105f40]CC1[/highlight:f1f7105f40] auf dem Robby, NICHT zur CC2.
Daher wertet die CC1 das DCF-Signal aus. Die CC2 kann Datum und Uhrzeit aus der RTC der CC1 lesen und in die eigene RTC übernehmen. Die Funktionen dafür sind im Modul ccrp5.c2 (cc2net.de) zu finden. Mein Code-Beispiel nutzte dieses Modul.
Der DCF-Eingang der CC2 ist auf der Experimentierplatine NICHT zugänglich.


Leider klappts nicht wenn ich ihn direkt in eine c2p schreibe! Soll ich ihn irgendwo in eine der demo.c2p vom ccnet kopieren? Die benützt auch den Treiber ccrp5.c2.

Der Code kann nicht in eine c2p-Datei. Die ist nur für das Projekt. Du must alle Tests in eine c2-Datei tun.

Gruß Dirk

solo
09.12.2005, 22:52
Wenn ich den Codeschnippsel als function in eine *.c2p schreibe und zusätzlich einen string s definiere lässt es sich compilieren aber auf meinem Roby tut es nicht!
In einer *.c2 bekomme ich es nicht compiliert und wie nun ein Modul die Zeit anzeigen soll weiß ich nicht.

Weiß nicht mehr was ich noch damit anstellen soll, damit es tut, bin in Sachen c2p und c2 ein blutiger Anfänger.

Hilfeeeeeeeeeee

Dirk
10.12.2005, 18:27
Hallo Solo,

hier die Datei CCRP5_DCFAnzeige.c2p :

SYSTEM::vmcodes.c2
SYSTEM::constant.c2
SYSTEM::system.c2
SYSTEM::ports.c2
SYSTEM::plm.c2
SYSTEM::mem.c2
SYSTEM::str.c2
SYSTEM::math.c2
COMMON::strx.c2
COMMON::lcdext.c2
COMMON::ccrp5.c2
ccrp5_dcfanzeige.c2


... und die Datei CCRP5_DCFAnzeige.c2 :

/************************************************** *****/
/* DEMO-ROUTINE FÜR DEN DCF-Empfang */
/************************************************** *****/
/* Autor : Dirk Ottensmeyer */
/* Versionen : 1.0 für CCRP5 */
/* Datum : 10. Dezember 2005 */
/* Getestet : nein!!! */
/* Bemerkung : Demo f. d. DCF-Empfang an d. CC1 */
/************************************************** *****/
//---------------- Kurzbeschreibung ---------------------

//************************************************** *****
int i;
string s;
float result;

//IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII IIIII
//IIIIIII THREAD IIIIII
//IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII IIIII
thread main
{
i=ccrp5.init(); //Initialisierung CCRP5
lcdext.init();
// -------------- Startmeldung --------------------------
lcdext.print(" DEMO");
lcdext.line(2);
lcdext.print("CC1-DCF-EMPFANG");
sleep 1000;lcdext.clear();
//--
loop
{
ccrp5.getRTC(); //CC1-Uhrzeit lesen
lcdext.clear();s="";
str.putstring(s,"RTC1: ");
lcdext.print(s);
lcdext.time(1);
ccrp5.getRTCDATE(); //CC1-Datum lesen
lcdext.line(2);s="";
if system.year() == 2097 //CC1-Startdatum ohne DCF: 1.1.xx97
{//Kein DCF-Empfang:
str.putstring(s,"DCF not active!!");
lcdext.print(s);
}
else
{//DCF aktiv:
str.putstring(s,"DATE: ");
lcdext.print(s);
lcdext.date(1);
//Zu jeder vollen Stunde DCF neu anfordern:
if system.minute() == 0 and system.year() != 2097
{system.setdate(2097,1,1); //CC2-Datum auf CC1-Startdatum setzen
ccrp5.setRTCDATE(); //CC2-Datum (1.1.97) in CC1 übertragen
}
}
sleep 3000;
}
}



Ich habs nicht mehr testen können. Müßte aber funzen.
Das Modul ccrp5.c2 sollte das letzte vom cc2net.de sein!

Viel Erfolg!
Dirk

solo
11.12.2005, 16:32
@ Dirk

Das Programm läuft! Vielen Dank, echt super !!
Es ha zwar fast 14 Minuten gedauert, wahrscheinlich Aufgrund des Schlechten DCF-Signals, aber dann wurde Uhrzeit und Datum angezeigt!

Danksagend Solo

BastelWastel
19.02.2006, 04:31
hiho..

dumme frage, fang grad an mit PIC's zu basteln und hab nach nem billigen dcf empfänger gesucht..(durch google bin ich hier her gekommen ^^)

leider ist bei dem beschriebenen dcf modul keine anfängerfreundliche anleitung dabei und die beispielcodes bringen mir nich viel..
drum wollt ich ma anfragen ob das ding schon mal wer an nen pic (16F873) gebastelt hat und wenn wie ^^

besten dank schon mal
lg der BastelWastel ;)

solo
30.03.2006, 18:20
@BastelWastel: Leider hab ich damit noch keine Erfahrung. Bei mir hat das mit dem Modul von Conrad für ca. 10 Euro gut funktioniert.

Allerdings dauert es manchmal bis zu 50 Minuten bis die Uhrzeit am Display erscheint. Mich würde interessieren ob man die Uhrzeit mit einen Kondensator oder Knopfzelle in einem Chip irgendwie abspeicher kann. Vielleicht hat jemand eine kompetente Lösung dafür!

Dirk
30.03.2006, 21:37
Hallo solo,


Allerdings dauert es manchmal bis zu 50 Minuten bis die Uhrzeit am Display erscheint. Mich würde interessieren ob man die Uhrzeit mit einen Kondensator oder Knopfzelle in einem Chip irgendwie abspeicher kann.
Das erste Problem (50 Min bis Empfang) läßt sich meist durch einen sauberen Anschluß (abgeschirmtes Kabel, Blockkondensator an 5V) lösen. Auch ein Abstand von 10-15 cm zum RP5 hilft.
Die Zeit abspeichern: Geht im Prinzip mit einer RTC. Die Funktion ist ja eigentlich in der CC1 des RP5 vorhanden, d.h. dort läuft ja die Zeit weiter bis zum Abschalten. Soll sie auch danach erhalten bleiben, muss man eine externe RTC mit eigener Batterie anschließen.

Gruß Dirk

solo
30.03.2006, 23:17
Siehe auch:
https://roboternetz.de/phpBB2/viewtopic.php?t=327

Dirk
31.03.2006, 14:51
Siehe auch:
https://roboternetz.de/phpBB2/zeigebeitrag.php?t=327

Joo, kenne ich. Aber bei dir scheint's ja noch nicht zu helfen. Oder?
50 Min. ist viel zu lang und spricht für Empfangsprobleme.

Gruß Dirk

SprinterSB
31.03.2006, 15:49
50 Minuten ist zu lange. Da hast du Störungen, wahrscheinlich von einem Schaltnetzteil oder PC/TFT/Monitor in der Nähe.

https://roboternetz.de/phpBB2/zeigebeitrag.php?p=120102#120102

DCF-Empfang dauert 2-3 Minuten, mit einem Trickreichen Algorithmus im Schnitt etwas mehr als 1 Minute.

solo
31.03.2006, 20:42
@SprinterSB: Hast Du ein Beispiel für so nen Trickreichen Algorithmus?

Nachdem ich die Antenne über ein abgeschirmtes, steifes Kabel etwa 15 cm über der Experementierplatiene plaziert habe hat es besser geklappt! Neuer Rekord 20 Minuten.

Jetzt würde ich gerne noch einen Kondensator anbringen. Allerdings bin ich mir nicht sicher was für einen. Unter den Links oben findet man verschiedene Angaben für Kapazität und Typ. Unter Blocktransistor hab ich nur was für Leistungselektronik gefunden.

An meinem Oszi (nicht gerade das beste) kann ich den Puls relativ unscharf erkennen. 20 Minuten ist noch keine Bestzeit (Meiner alter Radiowecker schafts in 2 Minuten.

Dirk
01.04.2006, 08:50
Hallo solo,

der Aufbau mit dem geschirmten Kabel ist ja ganz o.k. Ich habe ein altes Mikrofonkabel geschlachtet. Die zwei Innenleiter sind Plus Versorgungsspannung und DCF-Signal, beide Abschirmungen sind Masse.

Was dann noch helfen kann, war bei mir eine kupferkaschierte Platine, die etwas größer als die DCF-Modul Platine ist. Die habe ich unter das DCF-Modul gesetzt (5 mm Abstand) und die Masse des geschirmten Kabels an die Kupferfläche gelötet. Die Mittelleiter gehen durch ein Loch in der Platine nach oben zum DCF-Modul.
Sinn: Abschirmung nach unten (zum RP5).

Ein Kondensator 100 nF sitzt zwischen Masse und Plus unten am RP5. Der trägt zwar zur HF-Entstörung nicht viel bei, verhindert aber Störungen in der Versorgungsspannung.

Das müßte es eigentlich bringen. Wenn nicht, liegt die Störquelle nicht beim RP5, sondern außerhalb. Das kannst du ja testen, in dem du den RP5 woanders aufstellst.

Gruß Dirk

P.S.: Da die CC1 das Auslesen und Decodieren der DCF-Zeit macht, hilft ein "trickreicher Algorithmus" nicht. Es sei denn, du proggst die komplette DCF-Decodierung selbst.

solo
01.04.2006, 23:33
Jetzt hab ich noch das abgeschirmte Kabel mit Masse verbunden und einen Elko 220nF (einen anderen hatte ich nicht zur Hand) zwischen GND und VCC gelötet.
Leider dauert es immer noch mindestens 20 Minuten bis das Signal ankommt!
Vielleicht liegt es ja an der Position im Raum wobei der Funkwecker auch in der Ecke das Signal noch empfängt.

Dirk
02.04.2006, 09:23
Hallo solo,

ich kann zwar nicht alles erkennen auf dem Bild, aber du must auf jeden Fall den Ferritstab mit der Antennenspule [highlight=red:e8d7e95b9c]waagerecht[/highlight:e8d7e95b9c] und nicht senkrecht befestigen! Das dürfte dein Haupt-Empfangsproblem sein!
Frage: Hast du die Leitung zwischen Antennenspule und DCF-Platine mit dem Koax-Kabel verlängert? Das könnte dann evtl. auch die Ursache von Empfangsstörungen sein. Es ist besser, diese Verbindung nicht zu verlängern, sondern die DCF-Platine mit nach oben zu setzen. Oben an der Antennenspule sitzt auch noch ein Kondensator, der muss auch dran bleiben (hast du sicher gemacht, kann ich aber auf dem Bild nicht ganz genau sehen!).

Ein 220 nF Kondensator ist auch o.k.

Gruß Dirk

solo
03.04.2006, 19:55
Kaum ist die Antenne waagerecht und der Akku frisch geladen gehts auch unter 5 Minuten!!
Lag wohl am Signal warum genau weiß ich nicht.

Habe gerade erfolglos probiert die verstrichene Zeit bis zur Übernahme der Funkuhrzeit im Display anstatt des Datums anzuzeigen. Vielleicht hat mir jemand nen Code?