Forum: Mikrocontroller und Digitale Elektronik Welcher Attiny brauch ich?


von Anfänger (Gast)


Lesenswert?

Hallo miteinander

Ich bin noch Anfänger auf dem Programmierweg mit Bascom, hab allerdings 
bereits mit LCDs und Taster Projekte erstellt.

Meine Frage ist, wie wählt Ihr einen Attiny oder Atmega aus?

Mein neues Projekt soll einen ADC Wert von 15 Konstanten mit dem 
Temperaturwert von einem DS18b20 vergleichen und entsprechend 2 Leds und 
ein Ausgang schalten.

In der Übersicht:

AttinyXX im 8poligen Gehäuse
interner Quarz
2 Betriebs/ Störungs Led
1 einfach Ausgang
1 ADC der anhand 15 vorgegebenen Werten entsprechend handelt
1 DS18b20 Temperatursensor
ISP wenn möglich
AVR Bascom als Programmiersprache

Ich würde am liebsten den Attiny13 nehmen, reicht hier aber der Flash 
und der Ram für solche Anwendungen?

Ansonsten den Attiny25 wenns nicht anders gehen würde.

Wie wählt Ihr den Chip aus?

Gruss

von Philippe B. (philippe27)


Lesenswert?

Sorry war nicht eingelogt:-)

von Stefan (Gast)


Lesenswert?

ich nehme attinys nur wenn ich kaum platz habe sonst immer den atmega8

wenn ich weiss das projekt könnte größer werden den atmega 16 damit hat 
man genug pins und sollte der flash nicht reichen kann man ihn ohne 
umbau einfach durch ein atmega32, 64 oder 128 tauschen

von Peter R. (peterfido)


Lesenswert?

Wenn Du nicht weißt, ob der Atmel ausreichend groß ist, jedoch die 
Anwendung kennst, kannst Du unter Bascom losprogrammieren und dann zeigt 
er Dir schon beim Kompilieren, ob der Platz reicht oder nicht.

von Peter R. (peterfido)


Lesenswert?

ADC und Temp lesen passt schonmal in den Tiny13. Jetzt kommt es darauf 
an, wie das mit den 15 Konstanten gemeint ist.

Einen ADC Wert auf 15 Konstanten einzuteilen erfordert recht genaue 
Hardware.

von P. M. (o-o)


Lesenswert?

Peter R. schrieb:
> Einen ADC Wert auf 15 Konstanten einzuteilen erfordert recht genaue
> Hardware.

Hm? Das schaff jeder AVR mit ADC problemlos. Wichtig ist nur, ein 
vernünftiges analoges Signal am ADC zu haben.

von Peter R. (peterfido)


Lesenswert?

Genau das meinte ich mit Hardware. Lange Leitungen z.B. an einem 
Widerstandsarray und ein Handy oder anderes Störsignal in der Nähe und 
schon passt es nicht mehr.

Allerdings kann man eine Toleranz mittels Shift right oder AND einbauen, 
so dass die 63 Zwischenwerte auch noch gelten.

von Philippe B. (philippe27)


Lesenswert?

Hallo

Danke erstmal für die Antworten.

Ich möchte mittels 15 Schalterpositionen 15 verschiedene Widerstande vor 
den ADC Eingang schalten.

Bzw. 2 Schalterpositionen direkt mit GND oder VCC belegen.

Der ADC soll dann die Spannung messen und diese mit 15 vorprogrammierten 
Werten vergleichen. Der der am nächsten ist, wird gewählt und als 
momentane Schaltgrenze gebraucht.

Sobald die Temperatur am DS18b20 tiefer ist als diese Schaltgrenze, 
schaltet der eine Ausgang ein. (ohne PWm oder sonst was)

Ich brauche zwingend einen kleinen Attiny vom Gehäuse her, 
wahrscheinlich wird es ein SMD Projekt.

Hättet Ihr auch gleich noch einen besseren Vorschlag zu meinem jetztigen 
Stand?

Gruss Philippe

Edit:
Ich werde Metallschicht Widerstände verwenden. Kennt jemand ein guter 
Händler für verschiedene Werte? Nicht nur die E12 Reihe.

von dumdidum (Gast)


Lesenswert?

Hm,
also baust Du mit Widerständen einen Poti, der Deine Temperaturvorgaben 
darstellt und wenn's zu heiß oder kalt wird geht die Heizung an.
Habe ich das soweit richtig verstanden ?
Warum nicht gleich ein Poti ?
Kannst Du mal einen Schaltplan reinstellen ?

von Bernie (Gast)


Lesenswert?

Ich denke mal, dass  Philippe B.  ein Poti mit genau
reproduzierbaren Widerstandswerten haben möchte.

Das setzt natürlich einen 15-stufigen Schalter mit
hochwertigen Kontakten voraus. Der wird nicht billig sein
und einiges an Platz benötigen!

von Bernie (Gast)


Lesenswert?

Alternative wäre m. E. ein 4-Bit Codierschalter.
(16 Schalterstellungen)

Erfordert 3 Port-Pins mehr, was dann einen Tiny24
erforderlich macht.

von Philippe B. (philippe27)


Lesenswert?

dumdidum schrieb:
> Hm,
> also baust Du mit Widerständen einen Poti, der Deine Temperaturvorgaben
> darstellt und wenn's zu heiß oder kalt wird geht die Heizung an.
> Habe ich das soweit richtig verstanden ?
> Warum nicht gleich ein Poti ?
> Kannst Du mal einen Schaltplan reinstellen ?

Ja genau so meine ich es.

Ein Poti kann ich nicht brauchen, denn ich kann optisch nicht Wissen was 
für ein Wert momentan eingestellt ist. Daher mit festen Widerständen.

Ein Schaltplan hab ich noch nicht, bin erst an der Planung.

@Bernie
Wenn ich die Referenzspannung des ADC auf VCC setzte. (Ich verwende 5V)
Hab ich gerundet folgende Linearespannungen zur Verfügung.
0  0.357   0.714  1.071  1.428  1.785  2.142  2.499  2.856  3.213  3.57 
3.927  4.284  4.641  5

Ich werde die Widerstände (mit 1% Toleranz) nach diesen ungefähren 
Spannungen berechnen und dann gerechneten Wert gleich als Konstante ins 
Programm schreiben.

Ein normaler Drehschalter wie dieser hier hat einen Überganswiderstand 
von 0,001Ohm und das kann mit Toleranzen vernachlässigt werden. Oder?
http://www.reichelt.de/Drehschalter/DS-1PC/3/index.html?;ACTION=3;LA=2;ARTICLE=7211;GROUPID=3283;artnr=DS+1PC;SID=11UC9knX8AAAIAABLy2Pgfdd38af412fb887fb127ee6ee3f6ed7f

Gruss Philippe

von dumdidum (Gast)


Lesenswert?

Philippe B. schrieb:
> Ein Poti kann ich nicht brauchen, denn ich kann optisch nicht Wissen was
> für ein Wert momentan eingestellt ist. Daher mit festen Widerständen.

Also es gibt auch Rastpotis, die dann genau definierte Werte haben.
Außerdem verstehe ich da Dein Problem nicht, Du definierst einfach von 
den 256 Werten die Dein ADC liefert Teilbereiche, also von 0-16 ist 0, 
von 17-33 ist 1 usw. usf.
Wieso kannst Du nicht wissen was eingestellt ist ?
Eine übliche Beschaltung wäre z.B. sowas:


+----------+
| Tiny13   +[ADC0]------------[Poti]
|          +------------------[LED]
|          +------------------[LED]          [Last]
|          |                                 |
|          +-----------------------[1k]----|< NPN
+----------+                                 |
                                            GND


Dann fragst Du in Deinem Programm in einer Endlosschleife den ADC0 ab 
und vergleichst ob der Wert in einem Deiner definierten 15 Wertebereiche 
liegt.
Oder habe ich da jetzt was übersehen ?

von Jobst M. (jobstens-de)


Lesenswert?

Das mit dem Drehschalter klappt schon.


Anfänger schrieb:
> interner Quarz

Hat er nicht. Quarze sind nie intern. (Ausnahme: spezielle 
Uhrenbausteine)
Der RC-Oszillator wird für Deine Zwecke jedoch ausreichen.


Der ATtiny13(A) sollte reichen.
Ich weiß allerdings nicht, was Bascom erzeugt. In ASM würde das gehen.

ISP wird gewisse Probleme bereiten, da der Programmer im Zweifel gegen 
den 'Poti-Schalter', den DS1820 arbeiten oder eine LED treiben muß.


Gruß

Jobst

von Jobst M. (jobstens-de)


Lesenswert?

dumdidum schrieb:
> Oder habe ich da jetzt was übersehen ?

Den Temperatursensor!? ;-)


Gruß

Jobst

von Wegstaben V. (wegstabenverbuchsler)


Lesenswert?

Anfänger schrieb:
> Mein neues Projekt soll einen ADC Wert von 15 Konstanten mit dem
> Temperaturwert von einem DS18b20 vergleichen und entsprechend 2 Leds und
> ein Ausgang schalten.

die Ursprungs-Aufgabenstellung klingt wei eine normale 
Temerpatur-Regelung, welche "Anfänger" da erfunden hat.

> Mein neues Projekt soll einen ADC Wert von 15 Konstanten
> mit dem Temperaturwert von einem DS18b20 vergleichen
> und entsprechend 2 Leds und ein Ausgang schalten.

Sollwerterfassung: 15 Widerstände über A/D Wandler(warum so 
kompliziert?)
Istwerterfassung: mittels DS18b20
Ausgang: 2 LED (vielleicht zur Grenzwert-Darstellung?)
         1 "Ausgang" (digital)

Insbesondere braucht man für die Sollwert-Vorgabe kaum E24 oder E48 
Metallfilm-Widerstände

von Philippe B. (philippe27)


Lesenswert?

dumdidum schrieb:
> Also es gibt auch Rastpotis, die dann genau definierte Werte haben.
> Außerdem verstehe ich da Dein Problem nicht, Du definierst einfach von
> den 256 Werten die Dein ADC liefert Teilbereiche, also von 0-16 ist 0,
> von 17-33 ist 1 usw. usf.

Etwa so wollte ich das Programm so oder so machen. Die Widerstände sind 
ja auch nicht auf lange Sicht hin immer gleich.

Dennoch hab ich keine feste und sichere Positionierung des Potis. Bin 
ich jetzt mit dem Poti genau an der Grenze eines ADC Bereichs wird es 
einige Zeit funktionieren und durch Alterung oder Temperaturschwankungen 
plötzlich in einen neuen Bereich gehen.

Da bau ich lieber feste vorgegebene Positionen ein.

Jobst M. schrieb:
> Hat er nicht. Quarze sind nie intern. (Ausnahme: spezielle
> Uhrenbausteine)
> Der RC-Oszillator wird für Deine Zwecke jedoch ausreichen.

Sorry natürlich RC Oszillator:-)

Jobst M. schrieb:
> ISP wird gewisse Probleme bereiten, da der Programmer im Zweifel gegen
> den 'Poti-Schalter', den DS1820 arbeiten oder eine LED treiben muß.

Ich könnte den ISP auch weg lassen. Einmal programmiert muss ja nichts 
mehr geändert werden. Nur bei Testobjekt wäre es ohne schlecht, ich kann 
allerdings auch einfach die Angeschlossenen Bauteile mittels Jumper kurz 
abklemmen.


Wegstaben Verbuchsler schrieb:
> Sollwerterfassung: 15 Widerstände über A/D Wandler(warum so
> kompliziert?)
> Istwerterfassung: mittels DS18b20
> Ausgang: 2 LED (vielleicht zur Grenzwert-Darstellung?)
>          1 "Ausgang" (digital)
>
> Insbesondere braucht man für die Sollwert-Vorgabe kaum E24 oder E48
> Metallfilm-Widerstände

Und wie soll die Temperatur eingestellt werden?
Auch darüber schon gedacht?

Gruss Philippe

von dumdidum (Gast)


Lesenswert?

Philippe B. schrieb:
> Dennoch hab ich keine feste und sichere Positionierung des Potis. Bin
> ich jetzt mit dem Poti genau an der Grenze eines ADC Bereichs wird es
> einige Zeit funktionieren und durch Alterung oder Temperaturschwankungen
> plötzlich in einen neuen Bereich gehen.

Nein eben nicht !
Ob Du nun einen 1k-Poti anschließt oder einen 100M-Poti, der ADC liefert 
immer Werte von 0 bis 255 bei 8bit.
Außerdem könntest Du einfach mit einer einzigen Taste die 
einzustellenden Werte durchgehen, zehnmal gedrückt Sollwert 10, 
sechszehnmal gedrückt Sollwert 1, Stichwort modulo ...

von Wegstaben V. (wegstabenverbuchsler)


Lesenswert?

Philippe B. schrieb:
> Und wie soll die Temperatur eingestellt werden?
> Auch darüber schon gedacht?

da gibt es verschiedenste Möglichkeiten (analog oder digital)

von Jobst M. (jobstens-de)


Lesenswert?

dumdidum schrieb:
> Außerdem könntest Du einfach mit einer einzigen Taste

Dafür hat er keinen Port mehr frei ...

von dumdidum (Gast)


Lesenswert?

Jobst M. schrieb:
> Dafür hat er keinen Port mehr frei ...

Also wenn er kein Poti nehmen will aber die 15 Werte sowieso fix sind, 
kann er den entsprechenden Wert in der Software halten und statt via ADC 
einfach mittels Taster sequentiell durchgehen.
Einen Pin hat er noch frei und wenn eine mehrfarbige LED verwendet wird 
sogar zwei:
1x Taster/Poti
1x OneWire
1x RGB-LED
1x Schaltausgang

Ich sehe da keine großen Probleme ...

von dumdidum (Gast)


Lesenswert?

dumdidum schrieb:
> 1x RGB-LED

Sorry meinte Duo-LED mit zwei Anschlüssen, z.B. wie hier erwähnt
http://www.dieelektronikerseite.de/Lections/Duo-LEDs%20-%20Aus%20zwei%20mach%20eins.htm

von Verwirrter Anfänger (Gast)


Lesenswert?

dumdidum schrieb:
> Sorry meinte Duo-LED mit zwei Anschlüssen, z.B. wie hier erwähnt
> http://www.dieelektronikerseite.de/Lections/Duo-LE...

Wieso RGB oder Duo LEDs?
Das geht mit 2 einzelnen LEDs meiner Meinung nach noch viel einfacher 
und vielseitiger.
1
                                  +
2
                                  |
3
                                  |
4
                                 .-.
5
                                 | |
6
                                 | |
7
                                 '-'
8
                                  |
9
                                  |
10
                                  V ->
11
                                  -
12
                                  |
13
                    Attiny o------o
14
                                  |
15
                                  V ->
16
                                  -
17
                                  |
18
                                  |
19
                                 .-.
20
                                 | |
21
                                 | |
22
                                 '-'
23
                                  |
24
                                  |
25
                                 ===
26
                                 GND
27
(created by AACircuit v1.28.6 beta 04/19/05 www.tech-chat.de)

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.