Forum: Mikrocontroller und Digitale Elektronik Attiny13 als Diagnosewerkzeug


von Patrick N. (petzibaer69)


Lesenswert?

Hallo, ich stehe vor folgendem Problem:

Zur Zeit entwickel ich eine Schaltung für meinen RC-Helikopter die sich 
hauptsächlich mit dem ansteuern von Positionslichtern beschäftigt. Dies 
realisiere ich mit einem Attiny13A. Das funktioniert auch soweit.
Zusätzlich soll nun aber auch die Spannung am Akku überwacht werden. 
Dafür möchte ich zuerst Daten sammeln. Das heißt ich möchte gerne die 
Akku-Spannung über den ADC einlesen und im Attiny speichern. Jede Minute 
oder alle 2 Minuten soll ein Wert gespeichert werden (Flugzeit 
10-15min).

Zuhause möchte ich dann über eine Umschaltung vom 
Positionslicht-Programm sowie der Akkuüberwachung auf eine Diagnose 
umstellen und die Werte auslesen.
Besteht die Möglichkeit die gespeicherten Werte an nur einem Pin seriell 
auszugeben und z.B. parrallel umzuwandlen um diese auf einem LC-Display 
anzuzeigen?

Im Datenblatt bin ich bisher nicht fündig geworden.

Gruß Patrick

von Joachim B. (jar)


Lesenswert?

machbar, entweder dein Tiny speichert es im EEPROM und wenn der 
kaputtgeschrieben ist wird der Tiny ersetzt oder du spendierst einen I2C 
EEPROM optimal DIL fürs einfache wechseln.

Patrick N. schrieb:
> Besteht die Möglichkeit die gespeicherten Werte an nur einem Pin seriell
> auszugeben und z.B. parrallel umzuwandlen um diese auf einem LC-Display
> anzuzeigen?

ja mit 2 Pins ginge es Tx und GND, aber an einen externen Computer oder 
Atmel oder Terminal, ein simples LCD hat zu wenig Inteligenz.

Das kontinuierlich als LinePrint auszugeben ist möglich aber 
leseunfreundlich, sollte schon Seitenweise erfolgen und dann muss man 
auch Seiten umblättern können.

von Markus M. (adrock)


Lesenswert?

Zum Auslesen (wo speicherst Du die Werte eigentlich?) müsstest Du den 
SPI-Bus verwenden und über diesen die Daten an einen externen Controller 
in Deinem "Diagnoseadapter" schicken, der sie dann auf einer 
entsprechenden Anzeige ausgibt.

Da der Attiny13 keine "echte" SPI-Hardware hat, musst Du das 
SPI-Protokoll in Software nachbilden. Das ist jedoch relativ einfach 
(auf einem Pin werden die Datenbits ausgegeben, auf einem anderen Pin 
das Clock-Signal getoggelt, danach das nächsten Datenbit...).

von Pandur S. (jetztnicht)


Lesenswert?

Weshalb nicht einen Controller verwenden nit etwas dran, zB einer 
seriellen Schnittstelle, zB einem Mega 16 oder Nachfolger ? Dann koennte 
man's per PC auslesen, was viel einfacher ist wie ein Display.

: Bearbeitet durch User
von The D. (thedaz)


Lesenswert?

Oh D. schrieb:
> Weshalb nicht einen Controller verwenden nit etwas dran, zB einer
> seriellen Schnittstelle, zB einem Mega 16 oder Nachfolger ? Dann koennte
> man's per PC auslesen, was viel einfacher ist wie ein Display.

Vermutlich, weil es keinen Mega mit weniger als 20 Pins gibt. Es gibt 
aber den ATiny102, der ein UART device und ebenfalls nur 8 Pins hat. An 
eine solche UART kann man dann ohne Probleme einen UART/USB Wandler 
anschließen und mit Hilfe eines PC Terminal Programms den Output 
anzeigen.

: Bearbeitet durch User
von Patrick N. (petzibaer69)


Lesenswert?

Ich habe mir das ganze folgendermaßen vorgestellt:

- Der Attiny speichert die Daten im EEPROM
- Zuhause wird der Attiny an eine externe Platine angeschlossen.
  Diese zweite Platine enthält einen Atmega zum ansteuern des LCD.
- Über eine Umschaltung möchte ich die gespeicherten Daten übertragen 
und anzeigen.

Joachim B. schrieb:
> Das kontinuierlich als LinePrint auszugeben ist möglich aber
> leseunfreundlich, sollte schon Seitenweise erfolgen und dann muss man
> auch Seiten umblättern können.

So habe ich mir das gedacht, dass ich Step-By-Step die Daten anschauen 
kann.


Sollte ich mich entscheiden einen externen EEPROM zu benutzen. Welcher 
würde seinen Dienst für diese Aufgabe erfüllen. Schließlich soll alles 
klein und nicht überdimmensioniert sein (Platz sowie Speicherkapazität).
Gibt es dort große Unterschiede im Bezug auf die Benutzerfreundlichkeit?

von Joachim B. (jar)


Lesenswert?

Patrick N. schrieb:
> Sollte ich mich entscheiden einen externen EEPROM zu benutzen. Welcher
> würde seinen Dienst für diese Aufgabe erfüllen. Schließlich soll alles
> klein und nicht überdimmensioniert sein

klein Tiny als SMD, aber wenn dessen EEPROM tot ist wer tauscht SMD 
Steine?

I2C EEPROMS gibt es auch als SMD dann wäre beim Tausch wieder löten 
angesagt, auch doof denn SMD Sockel willst du nicht auflöten weil nicht 
klein aber teuer!

das hier als  DIL 8 PDIP geht doch klein und 1Mbyte

at24C1024
http://www.atmel.com/Images/doc1471.pdf

ich denke 8-Pin DIL sagt dir was?
das dürfte selbst gesockelt gefühlt nicht zu groß und schwer sein

von Horst M. (horst)


Lesenswert?

Joachim B. schrieb:
> das hier als  DIL 8 PDIP geht doch klein und 1Mbyte
>
> at24C1024

1 M Bit !

von Patrick N. (petzibaer69)


Lesenswert?

Das klingt doch SEHR super. Vor allem ist es für mich als Neuling in 
diesem Bereich.

Zum Thema "EEPROM tot"
Ist doch richtig, dass ich mit einer geschätzen Lebensdauer von 3333 
Wochen rechnen kann, wenn ich sage ich habe wöchentlich 30 Lese- und 
Schreibvorgänge. Oder ist es dementsprechend die Hälfte?
Oder kommt da mehr hinzu?

> ich denke 8-Pin DIL sagt dir was?
Ja, damit kann ich auch noch leben, was den Platz angeht.

Ich werde mir auf jeden Fall ein paar I2C EEPROMs zulegen und damit 
etwas basteln.

von Stephan H. (stephan-)


Lesenswert?

http://www.whoopsie.de/home/12114920140111

so als Ideenquelle, der Mininlogger vom RC LineForum

: Bearbeitet durch User
von spess53 (Gast)


Lesenswert?

Hi

>Ich werde mir auf jeden Fall ein paar I2C EEPROMs zulegen und damit
>etwas basteln.

Warum nicht gleich FRAM

-High Endurance 10 Billion (10^10) Read/Writes

MfG Spess

von chris (Gast)


Lesenswert?

Noch ein Vorschlag, dürfte softwaremäßig das einfachste sein:
http://www.ebay.de/itm/RTF-BLACKBOX-FLIGHT-DATA-RECORDER-CLEANFLIGHT-OPENLOG-/141732614081?hash=item20ffec0fc1:g:G2wAAOSwvgdW3VBY

Einfach per Software-UART (nur TX nötig) vom Tiny13 deine Messdaten 
raussenden. Am Ende kannst du die SD-Card rausnhemen und am PC lesen.

von Joachim B. (jar)


Lesenswert?

Horst M. schrieb:
> Joachim B. schrieb:
>> das hier als  DIL 8 PDIP geht doch klein und 1Mbyte
>>
>> at24C1024
>
> 1 M Bit !

stimmt ich wunderte mich ob der Beschreibung eines Distributors, kannte 
die auch nur immer als Mbit, mea culpa und dabei habe ich sogar noch ins 
Datenblatt vor dem Posting geschaut.

Ich wundere mich, gibts keine 4- und 8- Mbit I2C in 8 PDIP/DIL

von Hp M. (nachtmix)


Lesenswert?

chris schrieb:
> Einfach per Software-UART (nur TX nötig) vom Tiny13 deine Messdaten
> raussenden.

Nicht mal ein extra Leituung ist nötig, wenn die Daten über die 
Positionslichter ausgegeben werden.
Wahlweise elektrisch oder optisch an einer dieser LEDs ankoppeln.

von Patrick N. (petzibaer69)


Lesenswert?

> so als Ideenquelle, der Mininlogger vom RC LineForum

Das ist genau das was ich suche bzw. basteln möchte.
Sieht gut aus. Auch größen technisch passt das ja gut.

> Warum nicht gleich FRAM

Kenne die ganzen Unterschiede nicht wirklich. Habe in diesem Gebiet noch 
keine Erfahrungen gemacht. Möchte mich da aber so langsam aber sicher 
rein arbeiten.

Aber da FRAM angesprochen wurde. Ohne jetzt selber nachgeschlagen zu 
haben, handelt es sich dabei nicht um einen flüchtigen Speicher (RAM)?
Wie gesagt muss mich da in Zukunft mal rein arbeiten.

von Peter D. (peda)


Lesenswert?

Es gibt auch SPI-Flash im SO-8 bis 32Mbit.

I2C hat für große Speicher eine zu geringe Datenrate.
Z.B. der S25FL032P0XMFI011 kann bis 104MHz SPI-Takt.

von Fassberg (Gast)


Lesenswert?

Peter D. schrieb:
> Es gibt auch SPI-Flash im SO-8 bis 32Mbit.
>
> I2C hat für große Speicher eine zu geringe Datenrate.
> Z.B. der S25FL032P0XMFI011 kann bis 104MHz SPI-Takt.

Um alle 1 bis 2 Minuten die Akkuspannung aufzuzeichnen ist eine SD-Card 
mit min. 64 Gbytes vonnöten.

von Patrick N. (petzibaer69)


Lesenswert?

64 GByte?
Geht da gerade was an mir vorrüber oder wie?

Ich wäre jetzt davon ausgegangen, dass ich in einer Minute 4 Byte pro 
Wert belege. Also maximal 60 Byte pro Flug (15 Minuten).

Reden wir nun aneinander vorbei oder habe ich gerade den Zusammenhang 
nicht verstanden?

von Patrick N. (petzibaer69)


Lesenswert?

Okay, die Frage zu dem FRAM hat sich bereits erledigt. Habe gerade 
nachgeschlagen und weiß nun wieso es ein nichtflüchtiger Speicher ist. 
Die Namesgebung hat mich da in die Irre geführt.

von Uwe K. (ukhl)


Lesenswert?

Patrick N. schrieb:
> ...
> Besteht die Möglichkeit die gespeicherten Werte an nur einem Pin seriell
> auszugeben...   ...um diese auf einem LC-Display
> anzuzeigen?

JA. Das ist sogar recht einfach.

Verwende eine Software UART. Dabei brauchst Du nur die Sende-Leitung.
Die Routine für das Senden eines Bytes könnte so aussehen:
1
// 104 us entspricht 9600 baud.
2
// Das Umschalten der Pins braucht auch seine Zeit. Deshalb nur 98.
3
// Muss experimentell ermittelt werden.
4
5
#define UART_DELAY 98  // UART Impulslänge
6
#define PIN_UART (1<<PINB0)
7
8
void SendChar(uint8_t c){
9
  uint8_t SetByte[10];
10
  uint8_t PinSave;
11
  uint8_t n = 0;
12
  
13
  cli();
14
  PinSave = PORTB;
15
  SetByte[0] = PinSave |= PIN_UART;
16
  for (n = 1; n <= 8; n++)
17
  {
18
    if ((c & 1) == 0) SetByte[n] = (PinSave |= PIN_UART); else SetByte[n] = (PinSave &= ~PIN_UART);
19
    c>>=1;
20
  }
21
22
  SetByte[9] = PinSave &= ~PIN_UART;
23
  for (n=0; n <= 9; n++)
24
  {
25
    PORTB = SetByte[n];
26
    _delay_us(UART_DELAY);
27
  }
28
29
  sei();
30
}

Das ganze über einen Timer zu machen ist sicher besser, aber auch 
aufwendiger. Das Beispiel sollte aber den Anforderungen genügen.

Das Programm ist nur als Beispiel und Anregung gedacht.

Es besteht die Gefahr, dass das Programm zu groß wird.
Dann ist zu überlegen ob ein ATtiny85 eine Alternative darstellt. Der 
ist Pinkompatibel, nicht wirklich teurer und hat deutlich mehr Speicher 
(auch EEPROM).

P.S.: Bei einem 10-Bit ADC sollten zwei Bytes pro Spannungswert genügen.

von Joachim B. (jar)


Lesenswert?

Uwe K. schrieb:
> Dann ist zu überlegen ob ein ATtiny85 eine Alternative darstellt. Der
> ist Pinkompatibel, nicht wirklich teurer und hat deutlich mehr Speicher
> (auch EEPROM).

ist doch egal ob man einen Tiny kaputt schreibt und den wechselt und neu 
flashen muss oder ein I2C EEPROM nur sollten beide DIL8 sein für den 
leichten Wechsel, ich würde lieber I2C EEPROM wechslen als immer wieder 
Tinys zu flashen, kommt halt auf die Schreibraten an.

von Uwe (Gast)


Lesenswert?

Wenn er 60 Byte pro Flug schreibt, überlebt das EEPROM uns alle! Also 
keine Panikmache wg. der Lebensdauer, das ist nämlich Unsinn.

von Patrick N. (petzibaer69)


Lesenswert?

Stimmt meine Rechnung denn ? Oder liege ich komplett daneben?
Es sollen ja maximal jede Minute der Wert der Spannungsmessung abgelegt 
werden bei ca. 15 Minuten Flugzeit.

von Uwe (Gast)


Lesenswert?

Nee, passt schon. Und wenn du bei jedem Flug das ganze EEPROM einmal 
vollschreibst, hält das Ding min. 100000 Flüge. Das reicht.
(Lesen vom EEPROM ist verschleißfrei.)

von Patrick N. (petzibaer69)


Lesenswert?

Wunderbar. Kommende Woche geht es dann los, dann werden meine Platinen 
fertig. Danke erstenmal.

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
Noch kein Account? Hier anmelden.