djtulan Hackerspace, Retrocomputing

Fake Chips - ATmega328P-AU

Chips aus China sind ja meistens relativ günstig zu kaufen, aber man bekommt gelegentlich auch welche die gar keine sind, sog. Fake-Chips. Auch ich musste neulich wieder einmal Lehrgeld bezahlen. Eine Bestellung von 10 Stück ATmega328P-AU aus Fernost entpuppte sich als Fake. Nachdem ich den dritten Chip dieser Bestellung auf eine Platine gelötet habe und dieser sich wieder nicht programmieren ließ, habe ich schlussendlich aufgegeben und dem Verkäufer geschrieben, dass seine Chips für die Tonne sind. 

Es lies mir aber keine Ruhe und habe etwas gegoogelt. Eine Seite, die sich genauer mit dem Problem beschäftigt hat, ist folgende: https://www.sparkfun.com/news/364

Hier mal ein paar Fotos von meinen Chips. Leider habe ich weder starke Säuren noch Röntgengerät, um den Die freizulegen, deshalb habe nur ein paar Bilder mit meine USB Mikroskop gemacht.

 

Fake Chip von oben und unten:

Die Beinchen glänzen im Vergleich zum einem echten Chip viel stärker. Beim Original sind sie eher matt.

undefined

 

undefined

undefined

Nun echte ATmega Chips von oben und unten:

Die eingravierte Schriftart ist eine andere. Man beachte die unterschiedlichen Date Codes.

undefined undefined

undefined undefined

Bei den echten, noch nicht eingelöteten Chips, sind die Beinchen matt, nicht glänzend.

undefined undefined

undefined

Ein kleiner Tip am Ende: Wenn man Elektronik aus Fernost einkauft, dann hilft es manchmal, die Bewertungen des Verkäufers genauer durchzulesen. Hat man einmal Fake-Ware bekommen, dann hilft es auch den Verkäufer direkt anzuschreiben. Hilft das alles nichts, dann kann man zumindest noch eine negative Bewertung abgeben, als Warnung für zukünftige Käufer.

Aquarium Computer - Teil 4 - Die Real Time Clock

Einer der wichtigsten Bestandteile eines Aquarium Computers ist eine Uhr. Diese wird benötigt um beispielsweise die Beleuchtung ein- bzw. auszuschalten.  Da der verwendete uController, der Arduino Nano, selber keine Real Time Clock besitzt, muss man diese erweitern. Das "Tiny RTC I2C module" eignet sich für diese Zwecke sehr gut.

undefined

 

Auf dem Modul befinden sich 2 Chips, ein DS1307 (Real Time Clock von Dallas) und zusätzlich ein HK24C32 (EEPROM mit 32 kByte).

Weiters ist auch der Quarz für die Uhr verbaut.

Die restlichen SMD Bauteile sind passive Bauteile wie Widerstände, Dioden und Kondensatoren. 

 

undefined

 

Auf der Rückseite befindet sich eine Batteriehalterung, der für eine Akku Zelle vom Typ LIR2032 (wiederaufladbar!!!) vorgesehen ist. Wenn man darin eine Standard CR2032 Lithium Zellen verwenden würde, könnte diese durch die Ladeschaltung explodieren.

 

 

 

Um dennoch eine gewöhnliche Batterie verwenden zu können, ist lediglich eine kleine Modifikation notwendig. R5, D1 R4 und R6 müssen entfernt werden. Statt dem Widerstand R6 wird eine Lötbrücke gemacht.

 

 undefined

Außerdem sollte man den Quarz mit etwas Zinn auf der Massefläche, auf der er aufliegt, festlöten, so schreibt es das Datenblatt vor. Zur Verwendung mit dem Arduino Nano, muss das Modul mit 4 Leitungen verbunden werden, wenn man eine fertige Bibliothek verwenden möchte.

RTC Module Arduino
VCC 5V
GND GND
SDA A4
SCL A5

Ich habe die von playground.arduino.cc vorgeschlagenen Bibliotheken Time und DS1307RTC verwendet. Die Einbindung ging super einfach.

#include <Time.h> // includes for time
#include <DS1307RTC.h>  // a basic DS1307 library that returns time as a time_t

// MACRO TO GET COMPILE TIME IN SECONDS
#define t(index, multiplier)  ((__TIME__[index]-'0') * (multiplier))
// use hours, minutes and seconds
#define hhmmss() (t(0,36000) + t(1,3600) + t(3,600) + t(4,60) + t(6,10) + t(7,1))

void setup() {
  // is the RTC running?
  if (RTC.get() == 0) {
    // set the RTC to the time this example was compiled
    RTC.set(hhmmss());
  }

  setSyncProvider(RTC.get); // the function to get the time from the RTC
}

Das RTC Objekt wird bekommt man bereits durch die Lib DS1307RTC, man braucht es nur noch verwenden. Diese Bespiel setzt die Uhr auf die Uhrzeit der Kompilierung, falls sie nicht laufen sollte.

Die aktuelle Uhrzeit kann man mit den Funktionen der Bibliothek Time dann ganz einfach auslesen.

  char buffer[32];
  snprintf(buffer, 30, "%.2d:%.2d:%.2d", hour(), minute(), second());
  print(buffer);

Viel Spaß beim Ausprobieren!

Home ← Ältere Posts