Go Down

Topic: neues Projekt - Digitaluhr mit richtig großen Zahlen (Read 7575 times) previous topic - next topic

nix_mehr_frei

Hallo,

so langsam nimmt mein Projekt Gestalt an  :)
Die Hardware steht erstmal soweit. Der für mich schwierigere Teil der Software kommt erst noch.
Im Prinzip ist an der Schaltung nichts Besonderes. 6x 74HCT595 U-förmig auf der Lochrasterplatine angeordnet. An jedem Ausgang ein npn-Kleinleistungstransistor mit 6,8K Vorwiderstand (also 48 Stufen). Von den SC236E hatte ich noch einen Sack voll. Der kann zwar nur Ic 100 mA, aber wer mehr braucht, es gibt auch "dickere". Im Schnitt eine Stromverstärkung von 250 ist auch recht ordentlich. Und 6,8K Widerstände hatte ich auch einen ganzen Haufen.
Neben dem ATMEGA328 ist der ISP-Header zum Programmieren und daneben ein Sockel für ein RTC Modul mit DS3231.
Da ich besonders große Ziffern wollte, und 7-Segmentanzeigen bei ca. 100mm Ziffernhöhe aufhören, bin ich auf die Idee gekommen, selbstklebende LED-Strips zu benutzen. Ich nutze welche mit 120 LEDs p. Meter. Nach jeder 3. LED kann man trennen, das sind 2,5 cm Abstufungen. Ich nutze 12,5 cm Segmente für die Minuten und Stunden und 7,5 cm für die Sekunden. Die 5m Rolle hat ziemlich genau gereicht  :)
Theoretisch ist die Zifferngröße weitestgehend frei wählbar.
Als Grundplatte verwende ich einen 30x120 cm Regalboden. Bei Ansteuerung aller Segmente fließt ziemlich genau 1A bei 12V. Das Kombinetzteil 12V 1,5A und 5V 1,5A für externe Festplatten passt hier goldrichtig. Bei voller Helligkeit braucht man fast ne Sonnenbrille  8)
Da werde ich die OE Pins der 595'er später zum Dimmen nutzen.

Gruß Gerald
rot ist blau und Plus ist Minus

nix_mehr_frei

kleines Update:

habe heute am Code gesessen, jetzt läuft's  :)

Code: [Select]

/* based on LucidTronix 4 Digit sketch
* modifyed by Ger@ld 1/2014
* Daisy Chained Shift Registers
* 6x 74HC595 connected to 7-Segment LED display
* with DS3231 Real time clock chip
* Tutorial at:
* http://www.lucidtronix.com/tutorials/52
* September 2013
*/
#include <Wire.h>
#include "RTClib.h"

RTC_DS1307 RTC;

int dataPin = 10;
int latchPin = 8;
int clockPin = 9;
int fotPin = 3;    // select the input pin for phototransistor; GND to E phototransistor C to input + 1M --> +5V
int dimPin = 6;    // select the pin to drive Output Enable from shift registers (pin 13)
int fotVal = 0;    // variable to store the value coming from the sensor

byte dec_digits[] = {0b10111111,0b00000110,0b11011011,0b01001111,0b11100110,0b01101101,0b11111101,0b00000111,0b11111111,0b01101111 };

void setup() {
  //set pins to output so you can control the shift register
  pinMode(latchPin, OUTPUT);
  pinMode(clockPin, OUTPUT);
  pinMode(dataPin, OUTPUT);
  pinMode(dimPin, OUTPUT);  // declare the Dim_Pin as an OUTPUT
 
  Wire.begin();
  RTC.begin();
  if (! RTC.isrunning()) {
    RTC.adjust(DateTime(__DATE__, __TIME__));
  }
}

void loop() {
  DateTime now = RTC.now();
  int thehour = now.hour();
  // switch between 24 hour clock and 12 hour clock
// if (thehour > 12 ) thehour -= 12;
  int hour_tens = thehour / 10;
  int hour_ones = thehour % 10;
  int minute_tens = now.minute() / 10;
  int minute_ones = now.minute() % 10;
  int second_tens = now.second() / 10;
  int second_ones = now.second() % 10;

  digitalWrite(latchPin, LOW);
  shiftOut(dataPin, clockPin, MSBFIRST, dec_digits[second_ones]);
  shiftOut(dataPin, clockPin, MSBFIRST, dec_digits[second_tens]);
  shiftOut(dataPin, clockPin, MSBFIRST, dec_digits[minute_ones]);
  shiftOut(dataPin, clockPin, MSBFIRST, dec_digits[minute_tens]);
  shiftOut(dataPin, clockPin, MSBFIRST, dec_digits[hour_ones]);
  shiftOut(dataPin, clockPin, MSBFIRST, dec_digits[hour_tens]);
  //take the latch pin high so the LEDs will light up:
  digitalWrite(latchPin, HIGH);
  {
  fotVal = analogRead(fotPin);            // read the value from the sensor
  fotVal = map(fotVal, 0, 1023, 0, 254);  // scale it to use it with the LED - map to 254, cause 255 is complete off
   
  analogWrite(dimPin, fotVal);            // set brightness
}
  // pause before next value:
  delay(100);
}



An Analog In 3 hängt ein Fototransistor. Emitter gegen Masse und Collektor am Eingang, Widerstand 1M vom Eingang gegen +5V. Digital Out 6 steuert die Pins 13 von den 595 Schieberegistern zum Dimmen per PWM.
fotVal = map(fotVal, 0, 1023, 0, 254); verhindert, das bei völliger Dunkelheit die Anzeige ebenfalls komplett abgeschaltet wird  :)
Qh der 1-er Sekunden nutze ich, um den Doppelpunkt blinken zu lassen. Dazu habe ich im Arry alternierend immer die geraden Werte 1 gesetzt und die Ungeraden auf 0. Ist simpel und dirthy  ]:)
Das RTC Modul habe ich steckbar gelassen. So kann ich es zum Stellen 2x im Jahr entnehmen und auf dem Breadboard stellen.
Na mal sehen, ich werde irgendwann mal ein Funkuhrmodul testen. Daliegen habe ich schon eins  :P
Ansosnsten, wenn es noch Fragen zum Aufbau oder Verbessereungen am Code gibt, nur zu  :D

Gruß Gerald
rot ist blau und Plus ist Minus

Realizer

Sehr gut!

Endlich sieht man mal ein fertiges Projekt bei dem richtig viele Transistoren verwendet werden. Mir gefällt das schon aus nostalgischen Gründen gut. :)

Eine Kuh macht muuhh.
Viele Kuehe machen Muehe

mkl0815

Für solche Aufgaben verwende ich gerne die ULN2003 für die 7-Segement Teile. Für den Doppelpunkt kann man zusätzlich einen ULN2803 (8 statz 7 I/Os) nehmen. Die Dinger können pro Kanal max. 500mA und gesamt (alle Kanäle zusammen) 0.7A. Das spart einen Haufen Transistoren.
Mario.

nix_mehr_frei

Den ULN hatte ich auch schon ist Auge gefasst. Aber da ich einen Sack voll dieser DDR-Transistoren habe (noch ca. 900 Stück - kein Tippfehler) werden erst mal die verheizt, ehe ich mir was Neues auf Halde lege. Bei den Widerständen sieht es nicht viel anders aus. Ich habe etliches kurz nach der Wende vorm Container gerettet, als das große Wegwerfen im Gange war. Das Meiste Kohleschicht mit 20% Toleranz. Heutzutage kaufe ich nur noch Metallschicht 1%, damit ich keine doppelte Lagerhaltung betreiben muß. Aber für sollche Projekte bietet sich sowas förmlich an. Die Abblock C's über den IC's sind genauso alt, oder die großen gelben MKT-Quader. Das ist halt der Vorteil an Lochrastermaterial, das man auch solch museumsreifes Zeugs mit verarbeiten kann.
Beim ULN komme ich letztendlich mit dem strom auch kaum höher, da in Summe max. 800mA.
Wenn's wirklich mehr sein muß, dann wäre der BC337 mit 800mA ganz gängig.
Ich dachte auch erst, das es mit den 100mA knapp werden könnte, da ich von 20mA p. 3'er LED Anschnitt ausgegangen bin. Aber ein 3'er Abschnitt begnügt sich mit 5mA, ich konnte es garnicht glauben. Und selbst dann sind sie so hell, das es in den Augen schmerzt. Bei völliger Dunkelheit wird per PWM auf 1/255'tel runtergetaktet und selbst da kann man noch was erkennen.  Bei 5 Gruppen pro Segment (12,5 cm) schalte ich gerade mal 25 mA. Erst bei 50cm Segmentlänge - das entspräche 1 Meter großen Ziffern, braucht man stärkere Transistoren  8)
Das kann zwar bei anderen Strips wieder etwas anders aussehen, aber ich wollte hier nur mal eine Größenordnung angeben.

Was jetzt noch folgt, ist die Suche nach einem passenden Gehäuse für das Board. Außerdem habe ich von den Netzteilen noch 3 oder 4 als Open Frame rumkullern. Zum Testen habe ich erst mal ein Gekapseltes genommen. Und ich werde mir ein 5m USB-Kabel mitbestellen! Wenn man für jede kleine Anpassung des Codes das Brett zum PC schleppen muß und das 1,5m Kabel wie eine Wäscheleine gespannt ist, um mit dem USBasp den ATMEL zu flashen, dann nervt das  ;)

Gruß Gerald
rot ist blau und Plus ist Minus

volvodani

#5
Jan 03, 2014, 01:09 pm Last Edit: Jan 03, 2014, 01:11 pm by volvodani Reason: 1
Die Uhr wäre doch für einen Attiny84 genau richtig. Der Atmega stirbt hier doch vor langerweile.
Nochwas für den hier:
http://forum.arduino.cc/index.php?topic=175674.0

Pack da doch mal die Uhre wenn sie abgeschlossen ist.
Ich bin auch ein Fan von solchen Uhren
http://forum.arduino.cc/index.php?topic=131882.0
nur etwas kleiner und mit besagtem Attiny.
Gruß
Der Dani
"Komm wir essen Opa!" - Satzzeichen retten Leben!

nix_mehr_frei


Die Uhr wäre doch für einen Attiny84 genau richtig. Der Atmega stirbt hier doch vor langerweile.


Hallo Dani,

das mag wohl sein, zumal der ATMEGA mit 16 MHz zu Gange ist. Aber ich habe mir mal bei Reichelt auf die Schnelle die Preise für die Tinys angesehen. Der 44'er kostet 1,30€ und der 84'er kostet 2,70€. Reichelt ist sicherlich nicht der allerpreiswerteste Anbieter, aber ich habe für 5x 328' Megas in der Bucht 9,80€ plus Briefporto bezahlt.
Dazu kommt noch, das wie du selbst erwähnst, man erst mal Handstände machen muß, den Code auf den Tiny zu portieren.  Auch wenn es mich reizt, aber die Nerven habe ich nicht mehr.
Was mich mehr reizen würde, statt des Arduino Mega mit dem ATMEGA 2560 den 1284, den es als DIL40 gibt, zu verwenden. In vielen Fällen sollte der ausreichen.

Gute Idee, wenn die Uhr fertig ist, kommt sie in die Uhrengallerie  :)
Ich könnte mich immer noch ärgern, das ich vor 15 Jahren bei einem Umzug meine gute alte Nixi-Clock, ein TTL-Grab, entsorgt habe. Es waren zwar nur normal große Röhren, keine "Monster", aber das Teil hatte z.B. einen Stundenschlag. "Zu Fuß" ohne Prozessor gelöst. Der Stundenimpuls las parallel die beiden Stundendekaden aus, schrieb sie in einen weiteren Zähler, der dann bis Null runterzählte und über einen Pizo mit Elko parallel ein Gongähnliches Geräusch erzeugte  :D
Und was das Zeug damals kostete! Heute dagegen ist es nur eine Frage der Zeit, wieviel Aufwand man treiben will.

Gruß Gerald
rot ist blau und Plus ist Minus

volvodani

#7
Jan 03, 2014, 03:16 pm Last Edit: Jan 03, 2014, 03:26 pm by volvodani Reason: 1
Und dann schaust du hier
https://guloshop.de/shop/Mikrocontroller/ATtiny84-A::34.html?

Attiny84 1,00
oder ein Attiny85 0,90

Gruß


Schau mal in den Code meiner Attiny 100mm Anzeige da ist eine komplette routine mit nur einem Taster zum Stellen drin dann kannst du mit einem Druck länger 750ms in den Stellenmodus erst Minuten dann kann mit kurzen druck die entspechende Anzeige erhöhen bis zu deinem gewünschten wert mit einem weitern druck kommst du auf Stunden.
Ich befeuere die schieberegister "nur" zweimal in der Sekunde.
Und dann kannst du den delay rausschmeissen (ist nicht ganz so schön).
Gruß
Der Dani
"Komm wir essen Opa!" - Satzzeichen retten Leben!

nix_mehr_frei

Ich werde mir deinen Code mal angucken.
Im von mir aufgebohrten Code waren es 250ms. Bei einer 4 stelligen Uhr ist das auch soweit ok. Nur da ich mit Sekundenanzeige arbeite, habe ich das etwas beschleunigt. Ich weiß, das delay nicht so elegant ist. Aber da ich keine Bedienelemente habe, die für entsprechende Zeit unbenutzbar sind, habe ich darin kein Problem gesehen.

Gruß Gerald
rot ist blau und Plus ist Minus

Muecke

Hallo miteinander,

ich finde das richtig amüsant das hier so viele Uhren bauen, warum auch immer das so ausgeprägt ist.
Ich habe auch eine Zuneigung zu Uhren jedoch nicht in der Natur der Elektrik sondern am Arm oder an der Wand mit Zeigern.
Finde die hier vorgestellten Uhren sehr interessant, macht weiter so.
- Anfänger in allen Hinsicht - Bilder sichtbar einstellen
1  Bild Hochladen (Attachements); 2 Beitrag Save; 3 Anhang rechter Mausklick; "Adresse des Links kopieren"; 4 Beitrag „Modify"; 5 img-Tags mit dem kopierten Link einfügen; 6 Beitrag Save
DANKE

SkobyMobil

Hallo,
die 24-Std ArmbandUhren kenne ich nur aus der frühen Zeit von Breitling.
Ist die Camel eine echte 24-Std Uhr, oder hat sie nur einen Wecker?
Gruß und Spaß
Andreas
die zweite Maus bekommt den Speck...

Muecke

die Wanduhr habe ich selbst bauen müssen :-( hatte damals keine gefunden habe in zwischen glaube ich 2 oder sogar 3 in der Wohnung hängen zum ärger meiner Frau :-)
Das Uhrwerk kann man fertig kaufen und das Ziffernblatt hatte ich selber gemacht und in eine Alte Uhr hinein gebaut :-)

Eine "Breitling" kenne ich auch und ich kenne sogar jemanden der sie am Handgelenk hat :-) ist mir etwas zu voll gepackt.

Die Camel Uhr ist eigentlich eine zwei Zonen Uhr mit einem 24h Blatt und einer 24h Zeiger wie auch 12 Stunden Zeiger.
Ich habe mir den 12h Zeiger jedoch heraus nehmen lassen.

Man kann die Uhr z.B. gut für eine zweite Zeitzone nehmen, die eigene Aktuelle Zeitzone wird auf der 12h Uhr eingestellt denn da bekomme ich mit ob es hell oder Dunkel ist, und auf der 24h Zeiger wird auf die gewünschte zweite Zeitzone eingestellt, z.B. beim Fliegen das Ankunftszeit. 

somit ja es ist eine richtige 24h Uhr es ist nicht nur ein Wecker :-)

ich ruhe mich sehr schwer mit "Normalen" Uhren verlese mich da regelmäßig :-( da ich selbst seit ca. 10 Jahren nur noch 24h Uhren habe.

- Anfänger in allen Hinsicht - Bilder sichtbar einstellen
1  Bild Hochladen (Attachements); 2 Beitrag Save; 3 Anhang rechter Mausklick; "Adresse des Links kopieren"; 4 Beitrag „Modify"; 5 img-Tags mit dem kopierten Link einfügen; 6 Beitrag Save
DANKE

Scherheinz

Hier könnte ihre Werbung stehen

nix_mehr_frei

Wo sind die Bilder? *kopfkratz* :smiley-eek-blue:
Seit dem Update der Foren-SW sind die Bilder weg :'(
rot ist blau und Plus ist Minus

Go Up