Hallo Zusammen Ich bin gerade dabei mir meine eigene GSM Fernsteuerung für meine Webasto Thermotop C zu bauen. Ich werde die Heizung erst demnächst verbauen wenn auch die Fernsteuerung einsatzfähig ist. Um die Heizung mittels µC zu starten, brauche ich ja nur wie auf dem Bild zu sehen, 12V auf die schwarze Leitung zu geben. In der Uhr ist aber noch ein vorwiederstand eingezeichnet. Weis jemand wie groß der sein muss ??? Die 2 Dioden und der PNP Transistor nehmen ja schon gut 2V weg, so das noch ca. 10V übrig bleiben. Laut unterlagen von Webasto soll bei angeschlossener Uhr und aktiven Heizvorgang, nur noch ca.7V auf der Leitung sein. Habe leider keine Uhr oder Ähnliches da um das mal eben raus zu testen oder gar zu messen. Deshalb meine Frage an euch ob schon jemand Erfahrungen damit gemacht hat oder die große des benötigten Widerstandes sogar kennt. Gruß Rene
Die Diode an der Basis ist eine Z-Diode und damit die Transistorschaltung eine Konstantstromquelle. Sicher nicht für 0.5A, sondern eher um einen Kurzschluss der schwarzen Leitung zu überleben, ich sag mal 10mA. Bei 5V6 Z-Diode also 470R. Es sei denn, der Strom wird so genau geregelt, weil er eine Steuerfunktion hat, dann müsste man mehr wissen.
Hi, warum steuerst du mit deinem Controller nicht einfach den W-Bus der Thermotop an? Dann kannst du alle Funktionen nutzen, die deine Standheizung hat ohne großen Hardwareaufwand (UART <-> K-Line mit z.B. mit L9637D und dann ist es nur noch Serielle Kommunikation) Hier gibts Infos dazu: Beitrag "Webasto W-Bus" Bin auch gerade dabei so eine Lösung umzusetzen. Habe mir dazu ein SIM900 GSM shield für den Arduino geholt.
kasul schrieb: > warum steuerst du mit deinem Controller nicht einfach den W-Bus der > Thermotop an? Weil nicht alle TT C einen W-Bus haben? Und nein @MaWin, keine Steuerfunktionen. 470 Ohm gegen 12V Bordnetz sind ok, man hat dann aber keine Heizzeitbeschränkung, d.h. so lange 12V auf der schwarzen Leitung sind, heizt die Kiste (bis zur Unterspannungsabschaltung).
Reiner O. schrieb: > Weil nicht alle TT C einen W-Bus haben? Das ist mir neu. Ich dachte den Webasto-Bus haben alle. Woran kann ich denn erkennen ob meine Standheizung den W-Bus hat oder nicht? Habe auch die Thermotop C verbaut..
Mir ist Kein Webastomodel bekannt das über keinen W-Bus verfügt. Der einzige Unterschied besteht darin ob er als einzelleitung (gelb) aus dem Kabelbaum herausgeführt ist oder wie bei den neueren EVO Modellen im 4poligen Stecker (ebenfalls gelb) liegt. EVO Modelle lassen sich sogar nur noch über Wbus starten. Habe nur keine Ahnung ob sich die einzelnen Protokolle zur Ansteuerung je nach Model unterscheiden. Hat da vielleicht schon mal jemand Erfahrungen mit gemacht ?
kasul schrieb: > Hi, > warum steuerst du mit deinem Controller nicht einfach den W-Bus der > Thermotop an? Dann kannst du alle Funktionen nutzen, die deine > Standheizung hat ohne großen Hardwareaufwand (UART <-> K-Line mit z.B. > mit L9637D und dann ist es nur noch Serielle Kommunikation) > > Hier gibts Infos dazu: > > Beitrag "Webasto W-Bus" > > Bin auch gerade dabei so eine Lösung umzusetzen. Habe mir dazu ein > SIM900 GSM shield für den Arduino geholt. Wenn du schield arbeitest achte penibel auf den Stromverbrauch deiner Schaltung 10mA sollten absolute Obergrenze sein. Sonst ist deine Batterie im Auto locker in 14Tagen ohne Nutzung alle. Gerade im Winter. Bedenke bei 0Grad hat eine KFZ-Batterie nur noch die Hälfte ihrer Kapazität.
http://sourceforge.net/p/libwbus/libwbus/ci/master/tree/webasto_wbus.txt Hier gibt es jede Menge Infos wie das Protokoll aufgebaut ist. Ich meine dort gelesen zu haben, dass es mit ziemlich jeder Webasto-Heizung funktioniert. Beitrag "Re: Webasto W-Bus" Hier schreibt jemand, dass einzelne Kommandos nicht gehen. "Einzig bei ein paar Kommandos muss man aufpassen, die verstand meine Heizung nicht und hat darauf nicht geantwortet... Am einfachsten ist es, mit dem Webasto Diagnose Tool die Heizung zu starten, die Kommunikation aufzuzeichnen und dann zusammen mit der Beschreibung oben das ganze verstehen und nachbauen... Fehler auslesen usw. geht überigens auch prima und kann man sich dann schön per SMS zuschicken... ;-)"
Wow, interessant zu sehen das sich viele Leute mit den gleichen Dingen beschäftigen :-) Ich bastele auch gerade an einer Umsetzung für Atmega (Arduino) mit GSM für eine TTV. Bist Du mit der schwarzen Leitung und einfachem schalten sicher? Das könnte auch ein Wbus sein! Die genannten Links sind alle Top. Leider nicht direkt im Arduino zu implementieren.
Bin mir zu 100% sicher. Habe selbst schon unzählige Standheizungen verbaut und es war immer so. Das mit dem Schalter funktioniert. Habe es so derzeit bei mir im Auto verbaut bis meine Platiene mal fertig ist :)
Rene S. schrieb: > Mir ist Kein Webastomodel bekannt das über keinen W-Bus verfügt. Der > einzige Unterschied besteht darin ob er als einzelleitung (gelb) aus dem > Kabelbaum herausgeführt ist oder wie bei den neueren EVO Modellen im > 4poligen Stecker (ebenfalls gelb) liegt. Nein. Wenn gelbes Kabel nur zum Sicherungsblock: Diagnose Wenn gelbes Kabel zum 4 poligen Stecker: W-Bus Quelle: Werkstatthandbuch TT Evo, TT Z/C/E, Schulungsunterlage Webasto Ist ein Unterschied. Ab irgend einem Baujahr/SW Stand verstanden auch TT C W-Bus über die Diagnose, aber eben nicht Alle. Am einfachsten ist es, zu versuchen, die TT C über WTT 2.x und Interface per W-Bus anzusprechen. Gehts, dann kann sie W-Bus, gehts nicht:... >Bin mir zu 100% sicher. Habe selbst schon unzählige Standheizungen >verbaut und es war immer so. Ah ja. Gruß Elux
:
Bearbeitet durch User
Olli Z. schrieb: > Bist Du mit der schwarzen Leitung und einfachem schalten sicher? Das > könnte auch ein Wbus sein! Nein, siehe Schaltplanausschnitt TT Evo.
Reiner O. schrieb: > Wenn gelbes Kabel nur zum Sicherungsblock: Diagnose > Wenn gelbes Kabel zum 4 poligen Stecker: W-Bus Soll das heißen, das Diagnose (bus) und wbus nicht dasselbe sind? Davon bin ich bislang immer ausgegangen. Alle mir bekannten Umsetzungen um eine SH zu steuern simuliereb letzlich eine Diagnosesoftware. Wo soll denn der Unterschied sein?
Olli Z. schrieb: > Reiner O. schrieb: >> Wenn gelbes Kabel nur zum Sicherungsblock: Diagnose >> Wenn gelbes Kabel zum 4 poligen Stecker: W-Bus > > Soll das heißen, das Diagnose (bus) und wbus nicht dasselbe sind? Davon > bin ich bislang immer ausgegangen. > Alle mir bekannten Umsetzungen um eine SH zu steuern simuliereb letzlich > eine Diagnosesoftware. Wo soll denn der Unterschied sein? Das ist das selbe. Lediglich die Befehle unterscheiden sich ob sie von einer Uhr oder der Diagnosesoftware kommen. Wäre auch Verschwendung 2 getennte Bussysteme zu verbauen. Im Bild oben sieht man ja das die Uhr oder Diagnosesoftware über die selbe Leitung senden. Ziehst du den Sicherungsstecker X8/X9 ab, lässt sich die Heizung nicht mehr über die Uhr Starten.
Edit: Rene war schneller... ;-) Das Diagnose bei den alten Heizungen ein anderen Protokoll fährt, was dann eben nicht W-Bus ist... Drum kann man in der Diagnosesoftware von Webasto auch zwischen W-Bus und einigen anderen Einstellungen wählen... ;-)
:
Bearbeitet durch User
Hier ein Beispiel-Code für Arduino/Atmega: http://pastebin.com/9jEW030e ( stammt soviel ich weiß von hier: https://www.youtube.com/watch?v=6zZjSFef4yA ) Und hier ein weiteres Beispiel. Finde die Quelle nicht, daher bin ich mal so dreist, das hier komplett zu posten:
1 | #include <SoftwareSerial.h> // Lets include the software serial library |
2 | char inchar; // Will hold the incoming character from the GSM shield |
3 | SoftwareSerial SIM900(7, 8); // We will use pins 7 and 8 for the software serial |
4 | const byte phoneNumberAmount = 2; // How many phone numbers can control this device |
5 | boolean canControl = true; // A flag if checked phone numbers can control this device |
6 | boolean powerDown = false; // Is the GPRS shield powered down |
7 | int phoneNumberLength = 12; // Length of the phone number, international syntax without the + sign at the front |
8 | int relay = 5; // Relay pin number |
9 | char phoneNumbers[] = "358401111111,358401111112"; // Phone numbers that can control this device, international format without the + sign at the front |
10 | String alarmPhoneNumber = "358401111111"; // The number where the alarm for the battery voltage is sent to |
11 | char rcvPhoneNumberArr[13]; // Received phone number |
12 | float correctionValue = 1.661705f; // Correction value for the battery voltage |
13 | int batteryVoltage = 0; // Read the digital value of the battery voltage |
14 | float voltage = 0.0f; // The voltage value |
15 | float alarmVoltageLimit = 12.00f; // If the voltage goes under this value, an alarm text will be send to a phone number |
16 | float webastoMinVoltage = 12.15f; // The minimun voltage required to start Webasto |
17 | // State of charge Sealed or flooded lead acid Gel battery AGM battery
|
18 | // 100% 12.70+ 12.85+ 12.80+
|
19 | // 75% 12.40 12.65 12.60
|
20 | // 50% 12.20 12.35 12.30
|
21 | // 25% 12.00 12.00 12.00
|
22 | // 0% 11.80 11.80 11.80
|
23 | // http://www.energymatters.com.au/components/battery-voltage-discharge/
|
24 | |
25 | // Set up arduino and the SIM900 shield
|
26 | void setup() { |
27 | |
28 | Serial.begin(19200); // Serial with 19200 baudrate |
29 | pinMode(9, OUTPUT); // Change pin 9 to output so we can power the SIM900 on |
30 | pinMode(relay, OUTPUT); // Set the relay pin as output |
31 | digitalWrite(relay, HIGH); // Set the relay pin high |
32 | SIM900power(); // Wake up the GSM shield |
33 | // SIM900.println("AT+CPIN=1234"); // If your sim card has pin code
|
34 | SIM900.begin(19200); // We will use the same baudrate for the SIM900 module |
35 | delay(20000); // Will wait for 20 seconds for the SIM900 to logon to a network |
36 | SIM900.print("AT+CMGF=1\r"); // Set SMS mode to text |
37 | delay(100); // Will wait for 0.1 seconds |
38 | SIM900.print("AT+CNMI=2,2,0,0,0\r"); // Blurt out contents of new SMS upon receipt to the GSM shield's serial out |
39 | delay(100); // Will wait for 0.1 seconds |
40 | Serial.println("Ready..."); // Lets print that the SIM900 module is ready for use |
41 | }
|
42 | |
43 | // Power the SIM900 module using software commands, this will only work if the JP is soldered
|
44 | void SIM900power() { |
45 | |
46 | digitalWrite(9,LOW); |
47 | delay(1000); |
48 | digitalWrite(9,HIGH); |
49 | delay(2000); |
50 | digitalWrite(9,LOW); |
51 | delay(3000); |
52 | }
|
53 | |
54 | // Main loop
|
55 | void loop() { |
56 | |
57 | // Read the digital value for the battery voltage
|
58 | batteryVoltage = analogRead(A2); |
59 | |
60 | // Convert the value to 12 volts
|
61 | voltage = batteryVoltage * (12 / 1023.0); |
62 | |
63 | // Correct the voltage value
|
64 | voltage = voltage * correctionValue; |
65 | |
66 | // If voltage is under the set value of alarm
|
67 | if(voltage < alarmVoltageLimit && powerDown == false) { |
68 | |
69 | // Send the alarm text to car owner
|
70 | sendAlarmText(); |
71 | |
72 | // Power the SIM900 shield down to save power
|
73 | SIM900power(); |
74 | |
75 | // Set the flag that the SIM900 shield has been powered down to save power
|
76 | powerDown = true; |
77 | }
|
78 | |
79 | if(voltage >= alarmVoltageLimit && powerDown == true) { |
80 | |
81 | // Power the SIM900 shield up
|
82 | SIM900power(); |
83 | SIM900.begin(19200); // We will use the same baudrate for the SIM900 module |
84 | delay(20000); // Will wait for 20 seconds for the SIM900 to logon to a network |
85 | SIM900.print("AT+CMGF=1\r"); // Set SMS mode to text |
86 | delay(100); // Will wait for 0.1 seconds |
87 | SIM900.print("AT+CNMI=2,2,0,0,0\r"); // Blurt out contents of new SMS upon receipt to the GSM shield's serial out |
88 | delay(100); // Will wait for 0.1 seconds |
89 | |
90 | // Set the flag that the SIM900 shield has been powered back up
|
91 | powerDown = false; |
92 | }
|
93 | |
94 | // If there is a character coming from the SIM900 shield
|
95 | if(SIM900.available() > 0) { |
96 | |
97 | // Read a character
|
98 | inchar = SIM900.read(); |
99 | |
100 | // If character is ", we will read the phone number
|
101 | if(inchar == '"') { |
102 | |
103 | // Wait for a bit
|
104 | delay(20); |
105 | |
106 | // Read the next character
|
107 | inchar = SIM900.read(); |
108 | |
109 | // If the character is +, the first symbol of the international phone number
|
110 | if (inchar == '+') { |
111 | |
112 | // Wait a bit
|
113 | delay(20); |
114 | |
115 | // Lets loop for the phone number legnth
|
116 | for (int i = 0; i < phoneNumberLength; i++) { |
117 | |
118 | // Lets read a character
|
119 | inchar = SIM900.read(); |
120 | |
121 | // Wait a bit
|
122 | delay(20); |
123 | |
124 | // Will write the received phone number to an array
|
125 | rcvPhoneNumberArr[i] = inchar; |
126 | }
|
127 | |
128 | // Will check for all of the numbers that can control this device
|
129 | for(int a = 0; a < phoneNumberAmount; a++) { |
130 | |
131 | // Lets check all the numbers within the phone number
|
132 | for(int i = 0; i < phoneNumberLength; i++) { |
133 | |
134 | // Check if the numbers dont match
|
135 | if(phoneNumbers[a * phoneNumberLength + i + a] != rcvPhoneNumberArr[i]) { |
136 | |
137 | // Change the flag value
|
138 | canControl = false; |
139 | }
|
140 | }
|
141 | |
142 | // If the canControl flag is true, we dont need to check other numbers and we can end the loop
|
143 | if(canControl && (a != (phoneNumberAmount - 1))) { |
144 | |
145 | break; |
146 | }
|
147 | else if(!canControl && (a != (phoneNumberAmount - 1))) { |
148 | |
149 | // If it was false and there is still numbers to check, change the value back to true
|
150 | canControl = true; |
151 | }
|
152 | }
|
153 | |
154 | // Just a test print
|
155 | if(canControl) { |
156 | |
157 | Serial.println("This number can control this device"); |
158 | }
|
159 | else { |
160 | |
161 | Serial.println("This number cannot control this device"); |
162 | }
|
163 | }
|
164 | }
|
165 | |
166 | // If the character was #, the character that this circuit uses to send commands
|
167 | else if (inchar == '#' && canControl && voltage > webastoMinVoltage) { |
168 | |
169 | // Wait a bit
|
170 | delay(10); |
171 | |
172 | // Read the next character
|
173 | inchar = SIM900.read(); |
174 | |
175 | // If the next character is s
|
176 | if (inchar == 's') { |
177 | |
178 | // Wait a bit
|
179 | delay(10); |
180 | |
181 | // Read the next character
|
182 | inchar = SIM900.read(); |
183 | |
184 | // If the character was number 1, we will send high pulse for the webasto controller for a second
|
185 | if (inchar == '1') { |
186 | |
187 | // Will change the relay state
|
188 | digitalWrite(relay, LOW); |
189 | |
190 | // We will wait for one second
|
191 | delay(1500); |
192 | |
193 | // Change the relay state back to high
|
194 | digitalWrite(relay, HIGH); |
195 | }
|
196 | |
197 | // Wait a bit
|
198 | delay(10); |
199 | |
200 | // Will delete all the text messages from the sim, so it doesn't get clocked up
|
201 | SIM900.println("AT+CMGD=1,4"); |
202 | }
|
203 | }
|
204 | }
|
205 | }
|
206 | |
207 | void sendAlarmText() { |
208 | |
209 | delay(100); |
210 | SIM900.print("AT+CMGS=\"+"); // recipient's mobile number, in international format |
211 | delay(100); |
212 | SIM900.print(alarmPhoneNumber); // |
213 | delay(100); |
214 | SIM900.print("\""); |
215 | delay(100); |
216 | SIM900.println(); |
217 | delay(100); |
218 | SIM900.print("Car battery charge is under 25%, remote control disabled."); // Message to send |
219 | delay(100); |
220 | SIM900.println((char)26); // End AT command with a ^Z, ASCII code 26 |
221 | delay(100); |
222 | SIM900.println(); |
223 | delay(10000); // Give the module time to send SMS |
224 | }
|
Hoffe das ist eine Hilfe für den ein oder anderen.. Würde mich freuen, wenn ihr eure fertigen Codes auch zur Verfügung stellt.
Hi kasul, dieser Code steuert eine SH an, die per Schaltsignal an/aus geht. Ich arbeite an einer Implementation für SH mit Wbus und GSM.
Der erste Link ( http://pastebin.com/9jEW030e ) sollte eine W-Bus Ansteuerung sein. Habe die Codes bisher aber nur überflogen.. Sollte auch mehr als Anregung dienen.. vllt kann man ja die ein oder andere Idee abkupfern. Werde bei mir im Wohnwagen auch eine Lösung mit W-Bus Ansteuerung und GSM umsetzen. Zusätzlich kommt noch eine Waage-Einheit (für Gasflasche) und ein Gasmelder an den µC.
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.