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
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
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.
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.
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.
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.
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.
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 ?
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!
Alternative wäre m. E. ein 4-Bit Codierschalter. (16 Schalterstellungen) Erfordert 3 Port-Pins mehr, was dann einen Tiny24 erforderlich macht.
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
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 ?
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
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
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
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 ...
Philippe B. schrieb: > Und wie soll die Temperatur eingestellt werden? > Auch darüber schon gedacht? da gibt es verschiedenste Möglichkeiten (analog oder digital)
dumdidum schrieb: > Außerdem könntest Du einfach mit einer einzigen Taste Dafür hat er keinen Port mehr frei ...
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 ...
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
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.