Guten Tag liebes Team, leider hat mich mein Programmierer verlassen :( Ich habe ein kleines "mini" Projekt wofür ich jemanden benötige der mir einen Atmega8 programmiert Schaltung verfügt über atmega8, rtc, relais, lcd, taster, ds18b20 Aufgabe: -Zeitschaltuhr Programmieren. -Temperaturregelung -kleines LCD Menü zum einstellen der Werte. Leider gehts nicht detailhafter in der öffentlichkeit :) LG
:
Verschoben durch Moderator
Julia K. schrieb: > Guten Tag liebes Team, Ähm welches Team? Gehts noch? > > leider hat mich mein Programmierer verlassen :( > > Ich habe ein kleines "mini" Projekt wofür ich jemanden benötige der mir > einen Atmega8 programmiert > > Schaltung verfügt über atmega8, rtc, relais, lcd, taster, ds18b20 > > Aufgabe: > > -Zeitschaltuhr Programmieren. > -Temperaturregelung > -kleines LCD Menü zum einstellen der Werte. Hört sich jetzt nicht soooo "Mini" an. > Leider gehts nicht detailhafter in der öffentlichkeit :) Auch nichts zur angedachten Entlohnung? So ne Hausnummer wenigstens?
Ein defekter Progger hält ja nicht vom programmieren ab ;o) ..... ok ist zweideutig formuliert :oD
:
Bearbeitet durch User
Julia K. schrieb: > Leider gehts nicht detailhafter in der öffentlichkeit :) Selbstverständlich. Muss ja etwas ungeheuer kompliziertes und revolutionäres sein. Aber da der MEGA8 ein ganz neuer Prozessortyp ist, ,wirst du wohl kaum jemanden finden der sich damit auskennt.
@Mod und Julia, ist für dieses Jobangebot nicht der Marktplatz das richtige ? Man würde dort auch die max. Stundenanzahl, evtl. Programmiersprache und den Stundensatz angeben. Das/ ein Pflichtenheft muss man auch dem Jobber zur Verfügung stellen.
Julia K. schrieb: > leider hat mich mein Programmierer verlassen :( Nennt man das so heute? Das ihr Mädels immer alles so verfälschend umschreiben müsst. > Ich habe ein kleines "mini" Projekt wofür ich jemanden benötige der mir > einen Atmega8 programmiert Na, hoffentlich soll das Baby nachher nicht so heißen? Warum lernst du nicht programmieren und schreibst es selbst? Im Internet gibts reichlich Material um das sich selbst bei zu bringen. > -Zeitschaltuhr Programmieren. > -Temperaturregelung > -kleines LCD Menü zum einstellen der Werte. So einfach ist das nicht zu realisieren. Das hat schon einen gehobenen Anspruch. Ohne Lastenheft wird das unrealistisch. > Leider gehts nicht detailhafter in der öffentlichkeit :) So lange es nicht um Firmengeheimnisse geht, kannst du ruhig etwas detaillierter werden, ansonsten sehe ich schwarz. Wenn du es beruflich oder gewerblich brauchst, dann muss du schon einen korrekten Job ausschreiben, oder du suchst dir einen Studenten oder einen Freiberufler, aber das kostet. Ansonsten kannst du als Arbeitgeber im Unterforum Ausbildung und Beruf auch eine Stellenanzeige schalten. Soll doch wohl keine Schwarzarbeit sein?
Marc V. schrieb: > Aber da der MEGA8 ein ganz neuer Prozessortyp ist, ,wirst du wohl > kaum jemanden finden der sich damit auskennt. Du hast deinen Smilie vergessen ;-b Karl M. schrieb: > Das/ ein Pflichtenheft muss man auch dem Jobber zur Verfügung stellen. Ein Pflichtenheft wird auf der Grundlage eines Lastenhefts vom Programmierer ausgearbeitet. Der Auftraggeber ist für das Lastenheft verantwortlich.
Hallo zusammen, ich habe mir schon gedacht dass hier einige Fragen auftauchen da ich es wirklich nicht so "super" formuliert bzw. ausgeschrieben habe. Wie gesagt ich habe einfach keine Zeit dass ich programmieren lerne (was nicht heißt das ich es nicht gerne lernen würde) nur geht es momentan wirklich nicht. Ich habe "mini" Projekt geschrieben da ich durchs Forum gebraust bin und hier wirklich unglaubliche Sachen umgesetzt werden/wurden. Deshalb habe ich es mal bescheiden "mini" getauft! Im "größeren" Detail: Die Schaltung steht zu ca: 80% (Deshalb 80% da ich noch auf INPUTS des Progers. warten wollte und nicht gleich zum Bestücker (Onkel > glück gehabt) laufen wollte! Es soll eine Zeitschaltuhr (die nur mit der Uhrzeit und Wochentagen klar kommen muss keine Jahre / Schaltjahre) die mehrere Zeitpaare (zb:. 3 am Tag) schalten kann. Zusätzlich soll im Zeitpaar eine eingestellte Temperatur geregelt werden können... Das ganze Ding hat einen LCD das per Menüführung (Einstellung Zeit/Temp) eingegestellt wird. Das wäre ein Teil der mir noch fehlt und bei dem ich jemanden um Unterstützung bitte... Viele Grüße
So Dinger gibt es doch schon zur Genüge. Schau mal bei Aquariumsteuerungen.
Vorstellungen was das ganze kosten darf? Hardware ist ja auch noch unklar. Allerdings kann man den Aufwand nach dem Informationsstand so kaum abschätzen. Da muss schon ein ausführliches Lastenheft her.
Julia K. schrieb: (...) > Es soll eine Zeitschaltuhr (die nur mit der Uhrzeit und Wochentagen klar > kommen muss keine Jahre / Schaltjahre) die mehrere Zeitpaare (zb:. 3 am > Tag) schalten kann. Zusätzlich soll im Zeitpaar eine eingestellte > Temperatur geregelt werden können... Hallo Julia, warum nicht dieses Projekt modifizieren? https://www.mikrocontroller.net/articles/Heizungssteuerung_mit_Honeywell_HR20 Die Hardware existiert schon und kann günstig gebraucht erworben werden, die Firmware beinhaltet alles was Du Dir wünscht, also 7-Tage-Timer, einstellbare Schaltzeitpunkte und die Temperaturregelung. Sie liegt im Quellcode vor und kann an die persönlichen Wünsche angepasst werden. Grüßle, Volker.
Warum die blöden Frage nach dem Preis? Natürlich darf es nichts kosten! Geld wächst doch nicht auf Bäumen! Die gute Frau will doch nur was ganz einfaches. Sie hat doch schon fast alles zusammen! Da kann man doch den Rest auch mal aus Gefälligkeit machen? Geht doch schnell.... ;)
Julia K. schrieb: > Atmega8 Programmierer gesucht Seitenweise: https://www.gulp.de/gulp2/spezialisten/suche?1&query=avr
Timmy schrieb: > Warum die blöden Frage nach dem Preis? Natürlich darf es nichts kosten! > Geld wächst doch nicht auf Bäumen! Die gute Frau will doch nur was ganz > einfaches. Sie hat doch schon fast alles zusammen! Da kann man doch den > Rest auch mal aus Gefälligkeit machen? Geht doch schnell.... Bitte Ironie kennzeichnen, damit man den Schwachsinn nicht für Getrolle und Suche nach Stunk hält. MaWin schrieb: > Seitenweise: > https://www.gulp.de/gulp2/spezialisten/suche?1&query=avr Ein sinnvoller Link und das erste Brauchbare.
Hallo, danke für die vielen Antworten. Ich bin auf den ATMEGA8 und die Temperatursensoren angewiesen. Danke auch an den Vorschlag mit GULP.de Zum Preis: Ich kann das nicht einschätzen deshalb halte ich mich da zurück. "Ihr" wisst besser wie lange man Daumen mal pi hier für eine solche Aufgabe benötigt. Deshalb würde mich eine Hausnummer intressieren. Bitte nicht falsch verstehen aber ich habe von der Programmierung wirklich 0,0 Ahnung.... LEIDER :( VG
Auf Basis deiner spärlichen Angaben kann aber nunmal niemand hier eine realistische Aufwandsschätzung abgeben. So bekommst du höchstens Stundenlöhne von bis, aber das hilft dir auch nichts, wenn du nicht weist, wie lange das dauert. Mit freundlichen Grüßen Thorsten Ostermann
Ich kann dir keinen Preis nennen aber sicherlich wird sich der Preis mehr als halbieren wenn du von der Forderung mit dem Mega8 abrückst. Der hat nämlich nur 8kB Flash und 1kB RAM. Da muss schon ungemein viel Optimierung betrieben werden um alle Forderungen, wie z.B. das LCD und den 1-Wire Bus unterzubringen. Vermutlich wird auch auf handgeschriebenen Assembler nicht verzichtet werden können. Hier im Forum gibt es definitv ein paar Leute die zu so etwas fähig sind aber die Frage ist ob die Zeit und/oder Lust auf so ein Projekt haben und ob ihr euch beim Preis einig werdet. Nehmt ihr dagegen z.B. einen STM32F030C8 mit 64kB Flash und 8kB RAM (0,90€ @ 1k) hat der Programmierer nur noch die halbe Arbeit, da hier ohne Probleme vorhandene Bibliotheken verwendet werden können und es muss deutlich weniger optimiert werden. Die RTC könnt ihr euch auch noch sparen, da die beim STM32 mit dabei ist. "Calendar RTC with alarm and periodic wakeup from Stop/Standby" klingt nach dem was ihr sucht. Im Standby braucht das Teil übrigens nur 2µA bei aktivierter RTC.
Christopher J. schrieb: > Ich kann dir keinen Preis nennen aber sicherlich wird sich der Preis > mehr als halbieren wenn du von der Forderung mit dem Mega8 abrückst. Der > hat nämlich nur 8kB Flash und 1kB RAM. Völlig neu: es gibt jetzt auch einen ATmega328 mit viel mehr Speicher! Aber gut, ein F746 dürfte die Entwicklung deutlich vereinfachen :-( Julia K. schrieb: > Die Schaltung steht zu ca: 80% Erfahrungsgemäß wird davon nur ein Bruchteil brauchbar sein. Davon läßt man besser die Finger.
@Julia: Bitte schreib doch wenigstens eine Obergrenze hin, was du bereit bist, auszugeben. Ich denke nämlich, dass wir hier von 50 Euro reden, die ganzen Berufsfrickler hier jedoch eher professionelle Sätze annehmen. Professionell = Man gibt es danach in die Fertigung für grosse Stückzahlen. Du willst aber eine EINZELLÖSUNG. Zumindest habe ich es so verstanden.
Mangels Arduino kann ich es nicht ausprobieren, aber so aufwändig ist so ein Programm nicht
1 | // Zeitschaltuhr mit 24 Relais Ein- und Ausschaltzeiten und Solltemperatur Zweipunktregelung |
2 | // Arduino UNO |
3 | // DFRobot LCD Keypad Shield |
4 | |
5 | #include <LiquidCrystal.h> |
6 | #include <Time.h> |
7 | #include <EEPROM.h> |
8 | |
9 | // Select the pins used on the LCD panel: |
10 | LiquidCrystal lcd(8, 9, 4, 5, 6, 7); |
11 | |
12 | // Define some values used by the LCD panel and buttons: |
13 | #define KEYS 0 // Analogeingang an dem die Tasten hängen |
14 | #define SENSOR 1 // Analogeingang an dem der Temperatursensor hängt, liefert 10 pro GradC |
15 | #define RELAY 2 // Ausgangspin an dem das Zeitschalt-Relais hängt |
16 | #define HEATER 3 // Ausgangspin an dem das Heizrelais hängt |
17 | |
18 | // Navigation |
19 | // Tasten werden jede Sekunde abgefragt, dadurch Key-Repeat im Sekundentakt, ebenso der Temperatursensor |
20 | // Es werden 4 Tasten verwendet: UP DOWN LEFT RIGHT |
21 | // Zu Beginn wird die aktuelle Uhrzeit angezeigt (Mo 00:00:00) |
22 | // Mit LEFT RIGHT kann man den Cursor auf Wochentag, Stunden (Zehner und Einer), Minuten (Zehner und Einer), Sekunden (Zehner und Einer) stellen |
23 | // Mit UP DOWN kann man die jeweilige Ziffer bzw. Wochentag einstellen |
24 | // Steht der Cursor in Spalte 0, wird mit UP DOWN zwischen (der aktuellen Uhrzeit und Temperatur und Relaiszustand) und |
25 | // (den 24 Timerzeiten und dort jeweils zwischen Einschalt- und Ausschaltzeit) gewechselt um die Timer und bei der Einschaltzeit die Temperatur einzustellen |
26 | |
27 | unsigned long prev_time; // Last display cycle |
28 | |
29 | uint8_t mode; // 0=running 1=set 1on 2=set 1off 3=set 2on 4=set 2off ... 41=set 21on 42=set 21off |
30 | uint8_t pos; // 0=wday 1=h10 2=h1 3=m10 4=m1 5=s10 6=s1 7=temp10 8=temp1 |
31 | uint8_t w[43],h[43],m[43],s[43],t[43]; // whms [0] speichert die aktuelle Uhrzeit |
32 | // whmst[1] speichert Wochentag und Uhrzeit und Temperatur zum 1. Einschaltzeitpunkt |
33 | // whms[2] speichert Wochentag und Uhrzeit von dessen Auschaltzeitpunkt u.s.w. |
34 | uint8_t *ptr[10]={&mode,w,h,h,m,m,s,s,t,t}; // in welchem mode wird welcher Wert beeinflusst |
35 | uint8_t limit[10]={48,6,23,23,59,59,59,59,99,99}; // welcher Wert hat welchen Maximalwert |
36 | uint8_t cursor[10]={0,6,9,10,12,13,15,16,18,19}; // wo steht der Cursor |
37 | uint8_t step,used,i,lastmode,modified; // wird um 1 oder 10 erhöht/verringert und sind 7 oder 9 Werte veränderbar |
38 | int adc_key_in; |
39 | char lcdtext[24]; |
40 | |
41 | void setup() |
42 | { |
43 | lcd.begin(24, 1); // starts the LCD display (1 line by 24 chars) |
44 | prev_time=millis(); |
45 | digitalWrite(HEATER,0); |
46 | pinMode(HEATER,OUPUT); |
47 | digitalWrite(RELAY,0); |
48 | pinMode(RELAY,OUTPUT); |
49 | for(i=1;i<43;i++) for(pos=0;pos<5;pos++) ptr[pos+pos+1][i]=EEPROM.read(43*pos+i); |
50 | lastmode=mode=0; |
51 | pos=0; |
52 | modified=0; |
53 | } |
54 | |
55 | void loop() |
56 | { |
57 | if((millis()-prev_time)>999) |
58 | { |
59 | |
60 | prev_time=millis(); |
61 | // aktuelle Uhrzeit um 1 Sekunde hochzählen |
62 | if(s[0]<59) s[0]++; else { s[0]=0; if(m[0]<59) m[0]++; else { m[0]=0; if(h[0]<24) h[0]++; else { h[0]=0; if(w[0]<6) w[0]++; else w[0]=0; }}}; |
63 | // prüfe ob aktuelle Uhrzeit in einem Timerzeitbereich liegt |
64 | for(i=1;i<43;i+=2) if(((s[i]*60UL+m[i])*60+h[i])*24+w[i]<=((s[0]*60UL+m[0])*60+h[0])*24+w[0]&&((s[0]*60UL+m[0])*60+h[0])*24+w[0]<((s[i+1]*60UL+m[i+1])*60+h[i+1])*24+w[i+1]) break; |
65 | if(i==43) i=0; // nein |
66 | digitalWrite(RELAY,i>0); |
67 | digitalWrite(HEATER,i?(t[0]=analogRead(SENSOR)/10)<t[i]:0); |
68 | if(mode>0) i=mode&1; // Einschalt- oder Auschaltzeitmoment |
69 | lcdtext[0]=mode?'0'+(mode-1)/20:' '; |
70 | lcdtext[1]=mode?'0'+((mode-1)/2)%10:' '; |
71 | lcdtext[2]='o'; |
72 | lcdtext[3]=i?'n':'f'; |
73 | lcdtext[4]=i?' ':'f'; |
74 | lcdtext[5]=' '; |
75 | lcdtext[6]="MDMDFSS"[w[mode]]; |
76 | lcdtext[7]="oiiorao"[w[mode]]; |
77 | lcdtext[8]=' '; |
78 | lcdtext[9]='0'+h[mode]/10; |
79 | lcdtext[10]='0'+h[mode]%10; |
80 | lcdtext[11]=':'; |
81 | lcdtext[12]='0'+m[mode]/10; |
82 | lcdtext[13]='0'+m[mode]%10; |
83 | lcdtext[14]=':'; |
84 | lcdtext[15]='0'+s[mode]/10; |
85 | lcdtext[16]='0'+s[mode]%10; |
86 | lcdtext[17]=' '; |
87 | if(i) |
88 | { |
89 | lcdtext[18]='0'+t[mode]/10; |
90 | lcdtext[19]='0'+t[mode]%10; |
91 | lcdtext[20]='°'; |
92 | lcdtext[21]='C'; |
93 | } |
94 | else |
95 | { |
96 | lcdtext[18]=' '; |
97 | lcdtext[19]=' '; |
98 | lcdtext[20]=' '; |
99 | lcdtext[21]=' '; |
100 | } |
101 | lcdtext[22]='\0'; |
102 | lcd.setCursor(0,0); |
103 | lcd.print(lcdtext); |
104 | lcd.setCursor(cursor[pos],0); |
105 | step=pos&1?1:10; |
106 | used=mode&1?9:7; |
107 | adc_key_in = analogRead(KEYS); // read the value of the key |
108 | if (adc_key_in < 50) // btnRIGHT |
109 | { |
110 | if(pos<=used) pos++; else pos=0; |
111 | } |
112 | else if (adc_key_in < 195) // btnUP |
113 | { |
114 | if(pos==0) if(mode<limit[pos]) mode++; else mode=0; |
115 | else |
116 | { |
117 | if(ptr[mode][pos]+step<=limit[pos]) ptr[mode][pos]+=step; else ptr[mode][pos]=0; |
118 | modified=mode; |
119 | } |
120 | } |
121 | else if (adc_key_in < 380) // btnDOWN |
122 | { |
123 | if(pos==0) if(mode>0) mode--; else mode=limit[pos]; |
124 | else |
125 | { |
126 | if(ptr[mode][pos]>=step) ptr[mode][pos]-=step; else ptr[mode][pos]=limit[pos]; |
127 | modified=mode; |
128 | } |
129 | } |
130 | else if (adc_key_in < 555) // btnLEFT |
131 | { |
132 | if(pos>0) pos--; else pos=used; |
133 | } |
134 | if(lastmode!=mode&&modified) |
135 | { |
136 | if(lastmode>0) for(i=0;i<5;i++) EEPROM.write(43*i+mode,ptr[mode][i+i+1]); |
137 | modified=0; |
138 | lastmode=mode; |
139 | } |
140 | } |
141 | } |
macht das alles. Fehler left as an exercise to the reader, ich will Julia ja hier nicht die Lösung liefern, nur damit man einen Eindruck bekommt wie einfach eine Zeitschaltuhr mit 21 einstellbaren Wochentags-Zeiten und Temperaturregelung zu implementieren ist.
:
Bearbeitet durch User
Falls es wirklich nur Einzellösung sein soll wofür auch immer, kann man mini-SPS nehmen kommt man viel billiger weg. -Zeitschaltuhr Programmieren. -Temperaturregelung -kleines LCD Menü zum einstellen der Werte. Das hat alles z.B. Milenium 3 Steuerung von Crouzet onboard, aktuell ist das EM4-Steuerung. (Preis je nach Auslegung (Anzahl I/O) von 150€ bis 450€) Ach ja die Software zumindestens für M3 ist kostenlos und kann bei Homepage nach Registrierung heruntergeladen werden. Man hat auch im Editor einen Simulator dabei der fast alle Funktionen simulieren kann. http://www.conrad.biz/ce/de/product/197662/SPS-Steuerungsmodul-Crouzet-Millenium-3-Smart-XD10-S-88974142-24-VDC?ref=list Programmierung geht mit FB-Bausteinen, wenn man Grundkenntnisse in SPS-Sprachen hat geschätzter Lernaufwand etwa 1-2 Wochen nach Feierabend.(steht alles in der Hilfe zu den FBs)
:
Bearbeitet durch User
@Thread-Ersteller Also ich würd mich anbieten, das zu machen. Der ATMega8 reicht locker dafür. Allerdings beteilige ich mich nicht an der öffentlichen Diskussion hier. Weil jeder kann es am besten und Vorschläge zerreißen kann ich alleine. Kannst mir ja eine Mail schreiben, wenn Du Interesse hast. Bitte mit weiteren Infos, z.B. wieviele Zeitpaare maximal am Tag möglich sein sollen (die muß man ja irgendwo speichern, evtl. sogar dauerhaft in 512 Byte EEPROM), welcher Temperaturbereich, was da für eine Heizung dran soll (Ansteuerung PWM oder Phasenanschnitt), bereits vorhandene Beschaltung des ATMega, welche RTC ist vorhanden - DCF oder Quarz gewünscht, und mal ein konkreter Wert was es kosten darf wäre auch nicht verkehrt.
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.