Generieren eines Signals mit 1,7 MHz

Hallo zusammen,
ich habe mir vor Kurzem einen USB-Luftbefeuchter gekauft und diesen demontiert.
Nach etwas googeln bin ich auf folgendes Bauteil gestoßen: 5pcs-20mm-Ultrasonic-Mist-Maker-Fogger-Atomizing-Transducer-Oscillating-Blade-Piezoelectric-Ceramic-Air-Humidifier-Accessories

Unter Artikeldetails steht, dass hier 1,7 MHz benötigt werden, bekomm ich die in irgendeine Form mit dem Arduino Uno erzeugt, so dass ich den Luftbefeuchter mit dem Arduino steuern kann ohne die Treiberplatine des Luftbefeuchters zu benutzen?

Hallo,

genaue 1,7MHz sind leider mit einem Timer nicht möglich. 1,6MHz oder 2MHz. Dazwischen leider nichts. Dafür sind die 16MHz Takt vom µC zu niedrig. Hast du ein Oszi? Dann kannste dich mit Timer und/oder Bit toggeln befassen und testen, vielleicht klappt es nah dran.

1,7 MHz sind 588ns. Das geht vielleicht mit inline Assembler. Wenn man sonst nichts macht

Hallo,

der µC kann doch aber nur in Vielfachen von 62,5ns takten und damit was machen ...

Ja, das wird nicht aufgehen. 9 * 62,5ns liegt aber gar nicht soweit daneben. Das ist jedoch nicht trivial, da man noch den Overhead durch I/O und die Endlos-Schleife berücksichtigen muss.

Andere Optionen wären ein schneller 32 Bit Prozessor, aber das ist etwas Overkill. Oder ein externer Oszillator der vom Arduino gesteuert wird.

Hallo,

ich könnte mir das vorstellen wenn das Programm in reinem Assembler wäre. Laut meiner letzten einmaligen Erfahrung mit Inline Assembler, ich selbst kann das nicht, frisst der Inline Overhead den Vorteil fast wieder auf. Zudem er hier nur 9 Takte Zeit hat.

Man könnte noch versuchen mit Bit toggeln und dazwischen Nops einfügen bis es ungefähr paßt.
Das ganze in eine while(1) rein. Müsste man probieren.

Mit 9*62,5 kommt man auf 1,78MHz. Irgendwie kommt mir die krumme Zahl bekannt vor.
Vor langer Zeit gab es mal ein kleinen Wettstreit-Thread wer am schnellsten einen Pin takten lassen kann.
Das war mit toggeln gewesen, wenn ich mich recht erinnere.

Hallo,

paar Gedanken von uns zusammengewurfen und schon gehts los. :slight_smile:
Den damaligen Thread finde ich nicht wieder, hatte mir aber was aufgehoben und gleich wieder damit rumgespielt ...
Mit der 2. while wäre man bei den 1,78MHz.

/*
 Arduino Mega 2560
*/ 

// add this to the top of your sketch
#define NOP __asm__ __volatile__ ("nop\n\t")

void setup()  {

  pinMode(13, OUTPUT);       // Port.B.Bit.7
             
}   // Ende setup


void loop()
{
  
  /*
  // 2MHz mit 50/50% Tasterverhältnis
  while(1)  {
    PORTB = 0b00000000;   // 250ns    Pin 13
    NOP; NOP; NOP;
    PORTB = 0b10000000;   // 250ns    Pin 13
    NOP;
  }
  */
  
  // 1,78MHz mit 56/44% Tasterverhältnis
  while(1)  {
    PORTB = 0b00000000;   // 250ns    Pin 13
    NOP; NOP; NOP;
    PORTB = 0b10000000;   // 312ns    Pin 13
    NOP; NOP;
  }
  
  /*
  // 4MHz
  while(1)  {
    PORTB = 0b00000000;   //  62ns    Pin 13
    PORTB = 0b10000000;   // 188ns    Pin 13
  } 
  */
  
  /*  
  // 2,67MHz
  while(1)  {
    PINB = bit (7);   // 187ns/187ns   Pin 13
  } 
  */
   
}   // Ende loop

Das ist totaler Blödsinn.

Der Ultraschallwandler braucht LEISTUNG, mit 20mA und 5V eines Arduino-Ausgangs machst Du gar nichts außer den Arduino kaputt.

Im Angebot steht:

Produkteinführung:

  1. Spezifikation: 20*1,2mm
  2. Resonanzfrequenz: 1,70 MHz
  3. Resonanz Impedanz: < 2 ohm
  4. Kupplung Koeffizienten: > 52%
  5. Statische Kapazität: 1800pF
  6. Zerstäubung Menge: < 380 ml/h

Ich schätze mal daß Du so zwischen 20W und 50W für die Ansteuerung brauchst.

Die Lösung ist ein Oszillator mit den 1,7MHz und ca 50W Ausgangsleistung.

Grüße Uwe

Hallo,

draufhauen ... ja .. aber nicht so sehr, denn

a) hat er einen USB Luftbefeuchter zerlegt
b) kann ein normaler USB Anschluss keine 20W liefern
c) ja, die 20mA vom µC Pin sind ganz sicher zu wenig, eine Leistungsstufe muss ran, Recht hat er

Das Augenmerk lag derzeit primär auf der Takterzeugung. Alles andere wurde ausgeblendet. :o

Hallo,
vielen Dank für die Antworten.

Den Code von @Doc_Arduino habe ich mal aufgespielt und getestet, leider genügen die 20mA wirklich nicht. Hatte gehofft, da es sich ja um einen USB Gerät handelt, der Strom vom Arduino ausreichen würde.

Welche Alternativen hätte ich nun, um den Membran zum vibrieren zu bekommen?

moiko89:
...leider genügen die 20mA wirklich nicht. Hatte gehofft, da es sich ja um einen USB Gerät handelt, der Strom vom Arduino ausreichen würde.

Welche Alternativen hätte ich nun, um den Membran zum vibrieren zu bekommen?

Hoffen reicht nun mal nicht aus. :wink:

Der Pin des Arduino darf nur mit 20 mA belastet werden und bei 40 mA ist das di Obergrenze.

Alternative: Mit einem Transistor verstärken.

Hallo,

wie schon erwähnt wurde, ausreichendes Netzteil und ein Transistor/Mosfet. In dem Frequenzbereich war ich aber noch nie selbst unterwegs. Die 1,7MHz sollte ein gängiger Logic-Level IRLZ34N oder IRLZ44N jedoch noch mitmachen. Den Gate-Widerstand würde ich bei dem Takt nicht weglassen. :slight_smile: Aufbauen und gucken wie der Takt nach dem Mosfet aussieht. Ich denke aber eher da ist noch ein Treiber notwendig um das Gate ordentlich umzuladen. Aber man kann ja mal sachte anfangen und gucken was der Ball macht. HF ist nicht mein Thema.

Bei der Frequenz dürften die Flanken in der Tat deutlich verschliffen sein. Oder in anderen Worten, man sieht die Ladekurve der Gate-Kapizität.

Hallo,

das wäre doch mal ein schönes Experiment wie weit man mit 20mA mit dem "Standard" Mosfet so kommt. :slight_smile: Mit einem Steckbrettaufbau brauch man da nicht anfangen. Einen Frequenzgenerator Code könnte ich beisteuern. Vorzugsweise mit Drehencoder (z.Bsp. ALPS) und dessen oder anderen Taster zur Bedienung. Mit Poti ginge auch, aber zu grob zum einstellen.

Hallo,
wenn ich das eben mal zusammenfassen würde, dann müsste man hier eine Schaltung aufbauen, welche sich um die Taktung kümmert und mit einem Strom versorgt wird, welcher für das Membran ausreichend ist und diese Schaltung dann als Zusatz mit dem Arduino steuern?

Ich hätte ja am liebsten die Treiberplatine welche in dem USB-Luftbefeuchter verbaut ist, nachgebaut, leider finde ich, wie schon beschrieben, die Bauteile nicht im Netz.

Falls Ihr den vorgeschlagenen Weg verfolgen möchte, benötige ich hier allerdings eure Hilfe, da ich nur im Ansatz verstehe, was ihr meint.

Ergänzung: das hier habe ich eben gefunden, laut Datenblatt könnte dies genau das sein, was ich benötige, eventuell kann man sich hier mal die Schaltung genauer ansehen und nachbauen. http://www.exp-tech.de/seeed-studio-grove-water-atomization-v1-0

1,7MHz zu schalten ist nicht trivial.

Ich will ja den Spaß am basteln nicht verderben, aber warum nimmst du nicht den USB-Luftbefeuchter, zerlegst ihn nicht, und schaltest einfach nur die Versorgung?

Falls Ihr den vorgeschlagenen Weg verfolgen möchte, benötige ich hier allerdings eure Hilfe, da ich nur im Ansatz verstehe, was ihr meint.

Dann ist dieses Projekt vielleicht etwas zu kompliziert für dich. Du bewegst dich hier an den Grenzen was mit dem Controller möglich ist. Entweder in Software oder Hardware sollte da etwas Wissen vorhanden sein.

Ich würde als erstes versuchen die originale Treiberplatine zu nutzen. Alternativ würde ich versuchen mit konventioneller Elektronik die Frequenz zu erzeugen- also z.B. mit Quarz, PLL-Regelkreis oder einem Schwingkreis.

denke auch, dass man in dem Fall ohne Arduino besser auskommt. Bei der MOSFET Auswahl sollte man zu dem versuchen, einen Typ mit möglichst geringer Gate-Kapazität zu bekommen. Ein IRLU2905Z hat zum Beispiel nur eine halb so große Gate-Kapazität wie ein IRLZ44 und kostet mit 54 Cent auch nicht viel mehr.

Trotzdem wird man in dem Frequenzbereich um einen Gate-Treiber nicht herum kommen, da es darauf ankommen wird, das Gate in beide Richtungen möglichst schnell umzuladen ... und da hilft nur Power :slight_smile:

Wäre es hier nicht einfacher ganz normale Bipolar-Transistoren zu nutzen. Hier ist kein Problem einen Leistungstransistor zu finden, der ein paar Mhz ohne Verrenkungen schaltet.