In dat schemaatje is alles dc gekoppeld, en staat er ook nog eens 12v op! (da's 1.5A door de speaker, logisch dat de boel gaat roken... )
Ik had het afgeleid van een publicatie. Deze is dan dus ook niet goed.
Special Member
Nogal onfris schema...
Timers kun je ook zonder interrupts gebruiken (pollen), ik persoonlijk vind dat knoeiwerk.
Wat die routines precies doen weet ik ook niet, het lijkt wel of er wat includes ontbreken...
Golden Member
Omdat ik mijn speakertje heb opgeblazen dacht ik deze te gebruiken: Het is een goedkope dome tweeter.
Als je er in kijkt, zie je dat er een ingebouwde elco in zit van 4,7uF.
En de draden heben een + en - (vanwege die elco been ik aan).
Maar als je dat ding zou willen gebruiken, dan kan je er geen DC zoals de collectorstroom van een tor doorheen sturen. Het ding is gemaakt om parallel te schakelen aan een 'echte' luidspreker.
Maar als je een klein versterkertje wil maken (zoals een 20Khz toon) met alleen de tweeter, wat is dan de slimste schakeling?
Een weerstand van 5 Ohm ipv een speaker en dit ding er parallel aan?
Special Member
Golden Member
Een simpele piezobuzzer doet 't op die hoge frequenties een stuk beter... (spoeltje kan voor hogere frequenties wat afwijken, dit was voor 4kHz)
Grappig.. , ik dacht dat een tweeter juist was gemaakt voor de hoge tonen en een buzzer voor een simpel 'piepje'.
Golden Member
Een spoeltje heb ik niet zo gauw bij de hand...
Is er een formule voor de waarde wanneer je boven de 20Khz wilt gaan?
Special Member
I.p.v. spoeltje kun je bijv. ook een 100 ohm weerstand nemen, alleen is het geluid dan veel zachter.
(het spoeltje slingert de spanning op tot 25...40v, ik meet altijd met een scoop welke spoelwaarde de hoogste spanning geeft)
Golden Member
En nu maar hopen dat het hard genoeg klinkt voor de marter..
Special Member
560 is 56uH, da's veeel te laag (zo goed als kortsluiting), dat gaat de transistor niet overleven...
Golden Member
Groen Blauw Bruin (= 560). Het gaat per uH neem ik aan?
Special Member
Ja,
56mH is 563...
Golden Member
56 mH zou dan Groen Blauw Oranje zijn, niet?
Maar het signaal (en geluid) lijkt goed. De tor draait de hele dag al en wordt ook niet warm.
Eventueel kan ik het weerstandje in de basis iets verhogen om de collectorstroom te beperken.
Daarnaast zou ik natuurlijk ook een versterkertje kunnen maken met een elco naar de speaker (eindtrapje met 2 torren op halve voeding).
Of een TDA2030. Daar heb ik er nog een boel van liggen. Alleen hangen daar vaak weer allerlei onderdelen om heen (weerstanden, ontkoppel-C's, etc).
Terwijl het doel eigenlijk iets heel simpels is.
[Bericht gewijzigd door Bavelt op zaterdag 30 mei 2020 17:53:58 (20%)
Golden Member
Toch heb ik het nog steeds niet voor elkaar om een mooi geluidje te produceren.
Even terug naar bv de deurbel met melodietje.
Ik heb als eindtrapje de schakeling opgehaald uit de blog van Jos Verstraten.
R2 = 47 Ohm
In rust vloeit er geen stroom door de luidspreker. Da's al mooi.
Maar het verschijnsel wat ik maar niet kwijtraak is de 'tok' die je hoort zodra er een toon komt. Of ik die toon nu met Soud_Play() maak of zelf maak met timer (Latb3. hoog en laag maken).
De versterker schakelt duidelijk in zodra er een hoog op de ingang komt ('Tok'). Ik heb de ingang ook al even met een elcootje gekoppeld naar de poort, maar dat maakt niets uit.
Hoe raak ik dit "inschakel verschijnsel' nu kwijt of wat doe ik verkeerd?
Special Member
Hoe raak ik dit "inschakel verschijnsel' nu kwijt of wat doe ik verkeerd?
Door een 'echte' versterker te bouwen...
(dit is eigenlijk alleen maar een aan/uit switch. En als Ub hoger is als de Vcc van de controller werkt 't helemaal niet)
Golden Member
Ub is aan de +5V aangesloten (net als de controller).
Ik heb het 'versterkertje' uitgeschakeld en in plaats daarvan een klein kant-en-klaar versterkertje met een TDA2030 op een printje aangesloten.
Het effect is hetzelfde. De aanzet van een toon geeft een 'tok' in de luidspreker.
Als je bv 10 keer een toon van 15Khz(onhoorbaar voor mij) aanbiedt met 1 sec als interval, hoor je wel 10 keer een 'tok'.
Ik kan het denk ik omzeilen door (was ik toch al mee bezig) de toon niet te laten 'ophouden' maar doorlopen. De tonen gaan dan aan één stuk door, ieder met zijn eigen frequentie. Als ik een pauze wil, dan stuur ik er gewoon een toon van 22 Khz heen. Wellicht dat de hond van de buren het wel hoort..
De tonen ga ik zelf maken met een timer.
Als proef heb ik het even met delay_us gedaan, maar dat is super onbetrouwbaar. Delay_us(1000) geeft geen vertraging van 1 ms.
Delay_ms(1) wel.
Ik vermoed dat us alleen werkt als je de oscillatorfrequentie hoog genoeg hebt?
(Ik heb 8Mhz ingesteld)
Maar een timer met interrupt moet het betrouwbaarder maken (hoop ik )
Golden Member
Het is toch moeilijk voor elkaar te krijgen om een goede toon te produceren.
De interrupt is ook wel gelukt, daarmee kan ik zelf de frequenties bepalen.
Maar ook hier blijft elke toon met een hoorbaar afsluitverschijnsel.
Dus heb ik eens geprobeerd om via PWM de toon uit te laten 'faden' door de duty cycle te verminderen in een loopje.
Dat werkt wel, maar nadat de toon 'klaar' is, eindigt het toch abrupt met een duidelijk hoorbare 'tok'.
Terwijl ik eigenlijk wil dat hij eindigt met... niks. Gewoon stopt.
Of kan dat helemaal niet?
De proef:
pic basic code:
Main:
OSCCON = %01110000 '8Mhz internal
ANSELB = 0 'Port B Digital
TRISB = %11110110 'PORT B.3 as output
PORTB = %00000001 'Set PORTB.0 to 1, LED on
PWM1_Init(22000) 'Set Frequency
PWM1_Set_Duty(100) 'Set current duty for PWM1
PWM1_Start() 'Start PWM1
While True 'Endless loop
PWM1_Init(329) 'Set Frequency
For i1 = 20 to 100
PWM1_Set_Duty(i1) 'Set current duty for PWM1
Next i1
Delay_ms(250)
For i1 = 100 to 1 step -1
PWM1_Set_Duty(i1) 'Set current duty for PWM1
Next i1
Delay_ms(1500)
Golden Member
Ik heb een dergelijk programmaatje gemaakt met de Arduino Uno (wonderbaarlijk nog gelukt ook ). Zonder versterker, dus speakertje rechtstreeeks aan de PIC.
Maar het effect is hetzelfde. Het zal wel niet anders kunnen vermoed ik nu.
Je kan een speakertje niet ineens ('floating') laten ophouden.
Special Member
Als er DC op staat blijf je last houden van ploppen en klikken...
Golden Member
Elcootje tusen de speaker en pin geplaatst; dan zou er geen DC op staan.
Helpt ook niet.
Special Member
Je kunt de pin aan het eind van de toon als input schakelen...
Golden Member
Dan krijg je dus zo iets:
pic basic code:
'----------------------------------------------------------------------------------------
sub procedure Interrupt() iv 0x0004 ics ICS_AUTO
'----------------------------------------------------------------------------------------
If TMR2IF_bit Then 'See if timer2 irq
Latb.3 = not latb.3
TMR2IF_bit = 0
End If
end sub
en
-----
While True 'Endless loop
GIE_bit = 0
TRISB.3 = 1
If porta.0 = 0 then
GIE_bit = 1 'Enable timer2 irq
TRISB.3 = 0
Delay_ms(1000)
End if
Maar dat helpt niet.
Golden Member
Ik denk dat het verschijnsel niet bij MB ligt of de PIC.
Als ik een 1000 Hz toon via de PC laat horen en hem stop, hoor je ook de afsluitende 'tik' uit de PC-speakers.