Low Tech Funkmodul für 3D Taster

OP #7753190
Lesenswert?

Hallo,

ich suche ein Sender / Empfängerpaar das den Zustand eines Schalters "in Dauerschleife" überträgt:

-Also einfach ein Sender der dauerhaft sendet sobald er mit Strom versorgt wird.

-Und ein Empfänger der einen Ausgang geschaltet hält solange er das Signal empfängt.

-5m Reichweite sind völlig ausreichend.

-Zuverlässig eingehaltene Latenz von 1ms.

-Legales Frequenzband, möglichst klein, preiswert, Fertigmodul und geringer Stromverbrauch.

Vermutlich sehe ich den Wald vor lauter Bäumen nicht, doch alles was ich bisher gefunden habe sind jede Menge Module die per SPI oder UART Schnittstelle gefüttert werden wollen und Garagentorsender die den Tastendruck 1x senden, den Zustand aber nicht in Dauerschleife übertragen.

Die Anwendung ist einen 3D Taster für CNC Fräsen kabellos zu machen:

-Wird er aus seinem Halter genommen schließt ein Taster automatisch den Stromkreis zur Batterie und er beginnt zu senden.

-Berührt der 3D Taster das Werkstück unterbricht er den Stromkreis, Sender und Empfänger schalten ab und die Steuerung erkennt die Berührung.

Das Dauersignal ist wichtig, denn wenn es nur ein kurzes Tastsignal a la Garagentorsender ist fährt die Maschine einen Crash falls die Batterie leer ist oder das Signal nicht empfangen wurde. Ist beim Dauersignal die Batterie leer oder der Empfang gestört ist das leicht zu erkennen und nicht weiter problematisch. Wichtig ist nur eine kurze und nicht zu stark schwankende Latenz um den exakten Schaltzeitpunkt korrekt zu erkennen.

Christian

#7753222
Lesenswert?

Eigentlich hätte ich ja gesagt schau dir Mal den JDY-40 an. In Mode 4 geht das so in die Richtung glaube ich. Evtl noch irgendwo ein NOT und gut. Latenz müsste man messen. Die 1ms Forderung von dir ist aber schon sehr Echtzeit würde ich sagen. Das könnte allgemein interessant werden.

Aber essentiell wichtig ist bei dir ja die Ausfallerkennung damit deine Maschine nicht crasht. So wie ich das sehe überträgt der JDY-40 nur Änderungen. Was ihn damit schon wieder disqualifiziert.

Im einfachsten Fall wäre es eigentlich nur ein Modulator/Demodulator den du brauchst (z.B. OOK o.a). Frequenz da, Maschine darf weiter fahren. Frequenz weg, Maschine bleibt stehen bzw. Signal für Taster gedruckt/Referenz erreicht. Aber auch da ist die Frage: was passiert wenn dein eigentlicher Sender abschaltet, es aber einen Störer auf der selben Frequenz gibt was deine Maschine weiter laufen lässt?

Ich glaub richtig zuverlässig/sicher wird das erst wenn Daten übertragen werden.

#7753225
Lesenswert?

Nennt sich IR, einfach IR Sender und TSOP1738 . Hier ein Beispielcode mit 1.2Mhz F_CPU . Die Kontaktprobe hat zwei Reed-Kontakte, Schliesser, und zwei Magnete. Ein Reed-Kontakt ist im Halter, als CONTACT im Code, und eins ist in der Kontaktprobe um die Batterie freizugeben. Hier ein Auszug aus meinem Code fuer eine Kontaktprobe im Wecheslhalter. Datenuebertragung geht mit 2400bps und einem Messinterval von ca 1ms mit uebertragung von Batt_low der CR2430 Zelle.

1
#include <util/delay_basic.h>
2
#define dly()       _delay_loop_1(165)
3
#define inp(p)      PINB&_BV(p)
4
#define tx_hi()     (PINB|=_BV(3))
5
#define tx_lo()     (PINB&=~_BV(3))
6
#define nop()       asm("nop")
7
#define nop2()      do { nop(); nop(); } while(0)
8
#define tx_1()      (tx_hi(),dly())
9
#define tx_0()      (tx_lo(),dly())
10
#define tx_on()     tx_1(),tx_0()
11
#define tx_off()    tx_0(),tx_1()
12
#define tx_bat(n)   (tx_##n(),batt?tx_0():tx_1())
13
uint8_t batt=getVcc()>=2800;
14
for(;;) {
15
 tx_1();  nop2();
16
 if(inp(2))  tx_off(); else tx_on();
17
 if(inp(2))  tx_off(); else tx_on();
18
 if(inp(2))  tx_batt(0); else tx_batt(1);
19
 if(inp(2))  tx_off(); else tx_on();
20
 tx_0(); nop2();
21
}
22

23
///////////////////////////////////////////////////////////// Empfang
24
#define dly_() _delay_loop_1(83)
25
#define dly_1() _delay_loop_1(166)
26
#define out(x,y)  ((y)?PORTB|=_BV(x):PORTB&=~_BV(x))
27
#define IN_USE 1  // reed contact
28
#define IR 3
29
#define CONTACT 4
30
#define E_STOP 2
31
#define E_STOP_OK 1
32
#define BATT_LO 5
33
#if 0
34
#define INV ~
35
#else
36
#define INV
37
#endif
38

39
uint8_t i=0;
40
for(;;) {
41
out(CONTACT,INV -1);
42
out(E_STOP,E_STOP_OK);
43
for(;~inp(IN_USE);) { // reed contact off
44
  while(~inp(IR)) if(!++i) out(E_STOP,!E_STOP_OK) ; // wait for start bit
45
  dly_(); if(~inp(IR)) continue; out(E_STOP,E_STOP_OK);
46
  dly_1(); out(CONTACT,INV inp(IR));  dly_1(); 
47
  dly_1(); out(CONTACT,INV inp(IR));  dly_1(); 
48
  dly_1(); out(CONTACT,INV inp(IR));  dly_1(); out(BATT_LO, inp(IR));
49
  dly_1(); out(CONTACT,INV inp(IR));  dly_1(); 
50
  dly_(); i=0; 
51
}}
52
///////////////////////////////////////////////////
53
uint16_t avgAdc(uint8_t avg, uint8_t shift) {
54
     uint16_t result=0;
55
     while(avg--) {
56
       ADCSRA |= _BV(ADSC); // Start conversion
57
       while (bit_is_set(ADCSRA,ADSC)); // measuring
58
       result+=ADC;
59
     } 
60
     while(shift--) result>>=1;
61
     return result;
62
}
63
uint16_t getVcc() {
64
  ADMUX = _BV(MUX3) | _BV(MUX2);
65
  dly();dly(); dly();
66
  dly();dly(); dly();
67
  avgAdc(16,0);
68
  return 1125300UL / avgAdc(16,4); // Calculate Vcc (in mV); 
69
  // 1125300 = 1.1*1023*1000
70
}
#7753238
Lesenswert?

Christian K. schrieb:

-Also einfach ein Sender der dauerhaft sendet sobald er mit Strom versorgt wird.

Besitzt du dafür eine passende Frequenzzuteilung? Sonst müsstest du dich dazu z.B. erstmal bei der BNA schlau machen. In den SRD-Frequenzbändern ist z.T. der Arbeitszyklus (Sendung zu Sendepause) stark beschränkt und du musst jederzeit mit Störungen durch andere Nutzer rechnen (z.T. recht leistungsstark). https://www.bundesnetzagentur.de/DE/Fachthemen/Telekommunikation/Frequenzen/Grundlagen/Frequenzplan/frequenzplan-node.html https://www.bundesnetzagentur.de/SharedDocs/Downloads/DE/Sachgebiete/Telekommunikation/Unternehmen_Institutionen/Frequenzen/Allgemeinzuteilungen/FunkanlagenGeringerReichweite/2018_05_SRD_pdf.pdf

Wenn du LED-Beleuchtung im Raum hast, könntest du die Information durch Modulation der Raumbeleuchtung übertragen.

(Firma: Wilhelm.Consulting) #7753246
Lesenswert?

Christian K. schrieb:

-Legales Frequenzband, möglichst klein, preiswert, Fertigmodul und geringer Stromverbrauch.

"Legal" kann man mit entsprechender Lizenz überall senden. Du willst irgendein ISM Band "missbrauchen" (zu lesen: ursprünglich war dort kein funkdienst angedacht, aber auch nicht verboten, darum dat man angefangen in diesen lizenzfreien bändern WLAN&co zu etablieren).

Allein wegen der Latenz und der komplexität würde ich das auch optisch machen.

Allein die prüfungen, falls du das Kommerzialisierung willst dürften eine optische übertragung rechtfertigen.

So ein 36/40khz Modul kostet ja quasi nichts...

73

OP #7753313
Lesenswert?

Schade, andererseits beruhigend dass ich nicht völlig zu doof war ein entsprechendes Fertigmodul zu finden.

Dann wird es wohl doch auf IR rauslaufen. Ist im Maschinenumfeld zwar wegen der Verschmutzungsproblematik nicht optimal aber die Steuerung kann es ja erkennen wenn nach der Herausnahme des 3D Tasters kein gutes IR Signal ankommt. Und der Empfänger hätte bei Montage direkt auf der Spindel auch eine ständige direkte Sichtverbindung.

Ein anderer Gedanke war Ultraschall. Das hatte ich eigentlich wegen der Schallgeschwindigkeit verworfen denn alleine dadurch bekomme ich auf einen Meter Distanz schon 3ms Latenz. Wenn der Empfänger allerdings auf der Spindel mitfährt hat er immer denselben Abstand von wenigen cm zum Sender und kann vielleicht auch bei wasserdichtem Einbau in ein Gehäuse die kurze Strecke überwinden. Werde ich wohl mal ausprobieren müssen - eine verschmutzungsresistente Lösung wäre schon schick.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren