Sommario:
2025 Autore: John Day | [email protected]. Ultima modifica: 2025-01-13 06:57
Visualizza questo progetto sul mio sito Web per vedere una simulazione del circuito e un video!
La levitazione acustica è resa possibile dal fatto che il suono si comporta come un'onda. Quando due onde sonore si intersecano, possono interferire l'una con l'altra in modo costruttivo o distruttivo. (Ecco come funzionano le cuffie con cancellazione del rumore)
Questo progetto utilizza un sensore di distanza ad ultrasuoni per creare un effetto di levitazione. Funziona creando "tasche" in cui due onde sonore opposte interferiscono l'una con l'altra. Quando un oggetto viene inserito nella tasca, rimarrà lì, apparentemente sospeso sul posto.
Materiale necessario:
- Scheda Arduino:
- Ponte H:
- Sensore di distanza:
- Tagliere:
- Ponticelli:
- Diodo:
- Condensatori (forse):
Progetto originale di Make Magazine di Ulrich Schmerold.
Passaggio 1: ottenere trasmettitori a ultrasuoni
Dovrai sacrificare un sensore di distanza per questo passaggio (non preoccuparti, sono relativamente economici):
- Dissaldare e rimuovere entrambi i trasmettitori dalla scheda
- Rimuovi e salva il retino da uno
- Fili di saldatura a entrambi i trasmettitori
Passaggio 2: creare il circuito
Creare il circuito sopra e notare quanto segue:
- Potrebbe non essere necessario includere i due condensatori da 100 nF. (solo se la tua scheda per qualche motivo non è in grado di gestire il circuito e continua a spegnersi)
- La batteria da 9 V è un sostituto per qualsiasi alimentatore CC: la mia ha funzionato bene con una batteria LiPo da 7,5 V
Passaggio 3: codice
Carica questo codice sul tuo Arduino:
//codice originale da:
byte TP = 0b10101010; // Ogni altra porta riceve il segnale invertito void setup() { DDRC = 0b11111111; // Imposta tutte le porte analogiche come output // Inizializza Timer1 noInterrupts(); // Disabilita gli interrupt TCCR1A = 0; TCCR1B = 0; TCNT1 = 0; OCR1A = 200; // Imposta registro di confronto (16MHz / 200 = 80kHz onda quadra -> 40kHz onda intera) TCCR1B |= (1 << WGM12); // Modalità CTC TCCR1B |= (1 < no prescaling TIMSK1 |= (1 << OCIE1A); // Abilita il confronto degli interrupt del timer interrupt(); // Abilita gli interrupt } ISR(TIMER1_COMPA_vect) { PORTC = TP; // Invia il valore di TP alle uscite TP = ~TP; // Inverti TP per la prossima esecuzione } void loop() { // Non c'è più niente da fare qui:) }
Passaggio 4: montare i trasmettitori e calibrare
Puoi davvero usare qualsiasi cosa per farlo, ma alla fine ho usato una serie di mani d'aiuto (acquistane alcune qui:
- Inizia posizionando i trasmettitori a circa 3/4" di distanza l'uno dall'altro
- Prendi un pezzetto di polistirolo grande circa la metà di un pisello (non è necessario che sia rotondo)
- Posiziona il polistirolo sul retino dal passaggio 1
- Usando pinzette o pinze, posizionalo tra i due trasmettitori (dovrebbe iniziare a oscillare quando ti avvicini)
- Spostare i trasmettitori (più vicini e più distanti) finché il polistirolo non rimane fermo
Passaggio 5: risoluzione dei problemi
Mi ci sono voluti circa quindici minuti per farlo funzionare la prima volta, ma dopo è stato abbastanza facile farlo funzionare di nuovo. Ecco alcune cose che puoi provare se all'inizio non funziona:
- Assicurati di aver cablato tutto correttamente
- Aumentare la tensione al ponte H (batteria diversa)
- Prendi un pezzo più piccolo di polistirolo
- Prova una posizione diversa per i trasmettitori
- Prova ad aggiungere i condensatori (se non l'hai già fatto)
- Se ancora non funziona, forse qualcosa si è rotto: prova un diverso set di trasmettitori o una nuova batteria.