Skocz do zawartości

Kurs Arduino II - #3 - syrena alarmowa, MOSFET w praktyce


Komentator

Pomocna odpowiedź

Podłączony szeregowo ogranicza prąd "ładujący bramkę", bo każdy tranzystor ma pewną pojemność, którą trzeba naładować do określonego napięcia, aby zaczął przewodzić.

Rezystor podłączony tak jak na rysunku - do masy sprawia, że w czasie gdy na pinie jest stan nieustalony (wysokiej impedancji) np. gdy pin jest wejściem albo procesor jest w stanie resetu/programowania napięcie na tym pinie nie "szaleje" (jest w przypadkowym stanie) tylko utrzymuje się na nim poziom masy. Zapobiega to dziwnym zachowaniom urządzenia sterowanego przez tranzystor w sytuacjach wspomnianych powyżej.

  • Lubię! 1
Link do komentarza
Share on other sites

Niestety po równoległym podpięciu opornika pod buzzer nadal dźwięk jest bardzo cichy. W kursie było napisane, że opornik powinien rozładować energię. Niestety nic takiego się nie dzieje. Ktoś spotkał się z podobnym problemem? Jeśli tak będę wdzięczny za umieszczenie rozwiązania.

Pozdrawiam

DSK

Link do komentarza
Share on other sites

dsk, napisałeś, że buzzer jest nadal "bardzo cichy", to dość niejednoznaczne określenie 🙂 Kluczowe jest, czy słyszysz różnicę, gdy rezystor jest lub go nie ma? Jak dokładnie jest u Ciebie? Jeśli nie słyszysz różnicy, to obstawiam błąd w połączeniach.

Link do komentarza
Share on other sites

Zarejestruj się lub zaloguj, aby ukryć tę reklamę.
Zarejestruj się lub zaloguj, aby ukryć tę reklamę.

jlcpcb.jpg

jlcpcb.jpg

Produkcja i montaż PCB - wybierz sprawdzone PCBWay!
   • Darmowe płytki dla studentów i projektów non-profit
   • Tylko 5$ za 10 prototypów PCB w 24 godziny
   • Usługa projektowania PCB na zlecenie
   • Montaż PCB od 30$ + bezpłatna dostawa i szablony
   • Darmowe narzędzie do podglądu plików Gerber
Zobacz również » Film z fabryki PCBWay

orbit6, a dlaczego nie 🙂? Te piny mogą tak samo pracować jako piny cyfrowe. To, że mogą być wejściami analogowymi, to tylko ich druga funkcja (tak jak Rx/Tx/PWM w przypadku innych pinów).

Link do komentarza
Share on other sites

Bardzie sformułowałbym wyższe napięcie od napięcia zasilania układów cyfrowych. Mamy przecież wysokonapięciowe tranzystory mocy używane w energoelektronice np. IXTK32P60P Tranzystor: P-MOSFET; unipolarny; -600V; -32A; 890W; TO264

Producent: IXYS Oznaczenie producenta: IXTK32P60P.

Link do komentarza
Share on other sites

Cześć, poczytałem dzisiaj trochę o częstotliwościach poszczególnych tonów. Poniżej sketch z "gamą na buzzer bez generatora" 😅 . Plus mała melodyjka 😅😅

Gdyby ktoś potrzebował to proszę bardzo:

void setup() {
 pinMode(A15, OUTPUT); //Konfiguracja A5 jako wyjście
}

void loop() {
nC(); 
nD(); 
nE(); 
nF(); 
nG(); 
nE(); 
nG(); 
nE(); 
nE(); 
nE(); 
nD(); 
nD(); 
nC(); 
delay(1000); 
nE(); 
nE(); 
nD(); 
nD(); 
nE(); 
nE(); 
nF(); 
delay(200); 
nE(); 
nE(); 
nD(); 
nD(); 
nE(); 
nE(); 
nF(); 
delay(200); 
nE(); 
nE(); 
nD(); 
nD(); 
nC(); 
delay(2000);
}

void nC(){
  tone(A15, 1046);
 delay(300);
 noTone(A15);
 delay(20);
}
void nD(){
 tone(A15, 1174);
delay(300); 
 noTone(A15);
 delay(20);
}
void nE(){
 tone(A15, 1318);
delay(300);  
 noTone(A15);
 delay(20);
}
void nF(){
 tone(A15, 1396);
delay(300);  
 noTone(A15);
 delay(20);
}
void nG(){
 tone(A15, 1568);
delay(300);  
 noTone(A15);
 delay(20);
}
void nA(){
 tone(A15, 1760);
delay(300);  
 noTone(A15);
 delay(20);
}
void nH(){
 tone(A15, 1975);
delay(300);  
 noTone(A15);
 delay(20);
}
void gC(){
 tone(A15, 2093);
delay(300);
 noTone(A15);
 delay(20);
}

Zrobione na szybko na delayach ale wszystko da się przerobić...

Pozdrawiam.

  • Lubię! 1
Link do komentarza
Share on other sites

Połączenie lekcji o czujniku odległości oraz buzzerach. Powietrzna struna 🙂

Trekker wykorzystałem Twoją funkcję zmierzOdleglosc() zmieniając zapis na bardziej czytelny dla mnie, mam nadzieję, że nie masz mi tego za złe :->

Kod programu:

// Zmieniając odległość reki od czujnika odległości zmieniamy dżiwięk wydawany przez buzzer. 

#define trig 12
#define echo 11
#define struna A5

// Dwuoktawowy zakres struny
#define NOTE_C4  262
#define NOTE_CS4 277
#define NOTE_D4  294
#define NOTE_DS4 311
#define NOTE_E4  330
#define NOTE_F4  349
#define NOTE_FS4 370
#define NOTE_G4  392
#define NOTE_GS4 415
#define NOTE_A4  440
#define NOTE_AS4 466
#define NOTE_B4  494
#define NOTE_C5  523
#define NOTE_CS5 554
#define NOTE_D5  587
#define NOTE_DS5 622
#define NOTE_E5  659
#define NOTE_F5  698
#define NOTE_FS5 740
#define NOTE_G5  784
#define NOTE_GS5 831
#define NOTE_A5  880
#define NOTE_AS5 932
#define NOTE_B5  988


int dzwieki[24];  // Tabela z wartosciami czestotliwosci dzwieków
int prog;         // Aktualne polozenie palca na naszej powietrznej strunie
int odleglosc;
int poltony=1;      // Zmiana dźwieku co pół tonu.
int glissando=0;   // Płynna zmiana dźwięku.
                         // Możliwe zastosowanie przycisuku dla zmiany trybu.
void setup() {
 Serial.begin (9600);
 pinMode(trig, OUTPUT); 
 pinMode(echo, INPUT); 
 pinMode(struna, OUTPUT); 
}

void loop() 
{  
   if (poltony==1) // Praca w trybie półtonowym
   {  
     int a;
     a=zmierz_odleglosc();
     if(a>50)a=50;           // Ograniczenie działania czujnika odległosci do 50 cm. Mozna zwiększyć tę wartośc aby moc łatwiej trafiac w dzwieki

     prog=map(a,0,50,0,23);  // Skalowanie odleglosci z czujnika na polozenie palca na odpowiednim progu/dzwieku

     int dzwieki[]={NOTE_C4, NOTE_CS4, NOTE_D4, NOTE_DS4, NOTE_E4, NOTE_F4, NOTE_FS4, NOTE_G4, NOTE_GS4, NOTE_A4, NOTE_AS4, NOTE_B4,NOTE_C5, NOTE_CS5, NOTE_D5, NOTE_DS5, NOTE_E5, NOTE_F5, NOTE_FS5, NOTE_G5, NOTE_GS5, NOTE_A5,NOTE_AS5, NOTE_B5};

     tone(struna,dzwieki[prog]);
     delay(200);
   } 

   if (glissando==1) //// Praca w trybie glissando
   {  
     int a;
     a=zmierz_odleglosc();
     if(a>50)a=50;
     prog=map(a,0,50,262,988);
     tone(struna,prog);
     delay(100);
   } 
}
int zmierz_odleglosc() 
{
 long czas, odleglosc;
 digitalWrite(trig, LOW);
 delayMicroseconds(2);
 digitalWrite(trig, HIGH);
 delayMicroseconds(10);
 digitalWrite(trig, LOW);
 czas = pulseIn(echo, HIGH);
 odleglosc = czas / 58;
 return odleglosc;
}
Link do komentarza
Share on other sites

Gregorio, niestety do muzyki mam wybitny antytalent, więc od tej strony na pewno programu nie ocenię. Jednak od strony Arduino wszystko wygląda bardzo fajnie. Powodzenia z dalszymi eksperymentami 🙂

Link do komentarza
Share on other sites

Próbuje podłączyć zewnętrzne źródło sygnału audio, wzmocnić za pomocą mosfeta i wyprowadzić na buzzer bez generatora, ale nie bardzo wiem jak się do tego zabrać.

Sygnał audio podaję przez minijack wpięty do telefonu z jednej strony. Z drugiej mam piny wpięte w płytkę stykową. Jak podłączyć jeden z kanałów audio z minijacka do schematu przedstawionego na stronie (Arduino + mosfet + buzzer)?

Z tego co czytałem w internecie należy łączyć uziemienia dwóch urządzeń, w tym przypadku GND Arduino i jacka, jednak sygnał audio jest prądem zmiennym, czy więc nie zaszkodzi to Arduino?

Link do komentarza
Share on other sites

17 minut temu, D3binski napisał:

Jeśli tak, to czy da sie określić kiedy baza jest w konkretnym miejscu?

Jest na to jeden, zawsze skuteczny sposób - trzeba to sprawdzać w dokumentacji producenta. Czyli wpisujemy w Google symbol układu z dopiskiem "datasheet" otwieramy PDFa i sprawdzamy na rysunku. To jedyna w 100% pewna metoda, na sprawdzenie kolejności wyprowadzeń (dowolnego układu) 😉

Link do komentarza
Share on other sites

To ja mam takie pytanie, bo coś mi pomysłów brakuje. Jak to rozwiązać od strony elektronicznej, może ktoś ma pomysł. Chodzi o to by po zaniku zasilania (odłączeniu), dźwięk nie zanikał raptownie ale z np. 2sek opóźnieniem, ściszając się. Próbowałem z kondensatorem ale coś mi nie wychodzi :] Ma ktoś jakieś pomysły?

Link do komentarza
Share on other sites

Dołącz do dyskusji, napisz odpowiedź!

Jeśli masz już konto to zaloguj się teraz, aby opublikować wiadomość jako Ty. Możesz też napisać teraz i zarejestrować się później.
Uwaga: wgrywanie zdjęć i załączników dostępne jest po zalogowaniu!

Anonim
Dołącz do dyskusji! Kliknij i zacznij pisać...

×   Wklejony jako tekst z formatowaniem.   Przywróć formatowanie

  Dozwolonych jest tylko 75 emoji.

×   Twój link będzie automatycznie osadzony.   Wyświetlać jako link

×   Twoja poprzednia zawartość została przywrócona.   Wyczyść edytor

×   Nie możesz wkleić zdjęć bezpośrednio. Prześlij lub wstaw obrazy z adresu URL.

×
×
  • Utwórz nowe...

Ważne informacje

Ta strona używa ciasteczek (cookies), dzięki którym może działać lepiej. Więcej na ten temat znajdziesz w Polityce Prywatności.