Izrada uZappera
uZapper je orgonski zapper ili prevedeno generator pravokutnog impulsa s dodatkom orgonitnog bloka kroz koji ide signal. Po opće poznatom Hulda Clark dizajnu za generiranje pravokutnog impulsa najčešće se koristio dobri stari timer oznake 555. Nedostatak ovog timera je generiranje frekvencije temeljene na RC komponenti što garantira nestabilnu frekvenciju koja ovisi o toleranciji elemenata, stabilnosti napona napajanja, okolnoj temperaturi i ostalim faktorima. Nestabilnost frekvencija je izraženija kod visokih frekvencija. Kod zapera s 555-icom najbolje su se pokazale niske frekvencije koje su vrlo stabilne (15Hz). Nadalje mana 555-ice je relativno velika potrošnja struje i do 10mA, zbog toga se kvalitetniji zapperi rade na bazi CMOS verzije 555-ice koja troši vrlo malo. CMOS 555-ica daje maksimalno 20mA na izlazu (za razliku od 200mA standardne 555-ice) što je sasvim dovoljno za zapper koji u prosjeku daje par mA izlazne struje.
Kako bih zaobišao sve ove gore spomenute mane odnosno osigurao stabilnost frekvencije, malu i ekonomičnu potrošnju struje, veći izbor mogućih frekvencija i indikaciju istrošenosti baterije zappera konstruirao sam uZapper koji se temelji na mikrokontroleru ATMEGA48 od ATMELA koji sve ovo omogućava.
Orgonski uZapper s svom opremom
- Srce uZappera: ATMEGA48
- Programiranje ATMEGA48
- Generiranje pravokutnog signala
- Biranje frekvencije
- Indikator stanja baterije
- Izlazni krug
- Ulazni krug
- ATMEGA8 vs. ATMEGA48
- Smanjivanje potrošnje: low vs. full swing crystal oscilator
- Struktuiranje koda: delay.asm i eeprom_util.asm
- Fatalni interrupt
- Izlazni signali uZapper-a i zappera s tendollarzapper.com
- Upute za izradu uZapper A7
- Upute za izradu uZapper A31
- Upute za izradu uZapper B16 mini
- Upute za izradu uZapper C1
- Upute za izradu uZapper C1 mini
- Pozitivan offset
- Frequency Calculator
Srce uZappera: ATMEGA48
ATMEGA48 je ATMEL-ov 8 bitni mikrokontroller s 4Kb Flash memorije za programski kod, 512 byte SRAM radne memorije (razni registri) i 256 byte EEPROM-a. Mikrokontroleri su u biti minijaturna računala koji imaju mali procesor i mnoštvo digitalnih i analognih ulaza i izlaza preko koji mogu obrađivati podatke iz vanjskih jedinica i senzora i na osnovu ulaznih podataka davati određene izlaz, odnosno upravljati ostalim sustavima (npr. preko releja mogu upravljati motorom) stoga imaju široku primjenu u industriji, automatici, obradi signala i ostalim područjima.
ATMEGA je digitalni uCPU što znači da radi s TTL logikom signala (binarno: 0V = 0, 5V = 1) s tim da konkretno ovaj model može raditi i s naponima od 3.3V do 5V. Takt na kojem radi ATMEGA, a i bilo koji digitalni mikrokontroler je određen vanjskim kristalom koji daje preciznu frekvenciju do pete decimale bez obzira na vanjske faktore što jamči visoku preciznost kod generiranja signala određene frekvencije. Bitno je istaći da je maksimalna frekvencija na kojoj ATMEGA može raditi 20Mhz, međutim može se spojiti i 'sporiji' kristal čime se frekvencija može spustiti i do 1Mhz. S obzirom da potrošnja raste s većom frekvencijom uvijek se odabire najniži mogući radni takt koji je dovoljan za izvršenje zadatka. U dizajnu uZappera ja sam pronašao da je 4Mhz idealna frekvencija na kojoj je potrošnja mala, a omogućava generiranje signala maksimalne frekvencije od 2Mhz što je i više nego dovoljno za primjenu u zapperu.
Izbor ATMEGE48 je bio sasvim slučajan jer sam ga već imao pri ruci za jedan drugi projekt. Inače prije sam redovno radio s Microchipovim PIC16F84A kojega je vrijeme već pregazilo i nedavno sam se odlučio prebaciti na Atmelove mikrokontrolere. Nakon par mjeseci upoznavanja i rada s ovom zvjerkom mogu samo reći da sam oduševljen. Ima mali triljun mogućnosti i opcija i to baš one što nekako logično zatrebaju prilikom nekog razvoja što ukazuje na činjenicu da je ovaj chip plod godina isukstva.
Programiranje ATMEGA48
Kako bi izvršio bilo koji zadatak mikrokontroler (u daljnjem tekstu uCPU) treba isprogramirati. Programiranje se obično radi u razvojnom okružju koje besplatno daje proizvođač mikrokontrolera i to u najčešće u programskom jeziku asembleru. Zatim je potrebno 'uploadati' odnosno smjestiti ovaj kod u sami mikrokontroler za što služi poseban programator odnosno uređaj koji se preko USB kabela spaja na računalo te zadani kod upiše u Flash memoriju uCPU-a.
Flash memorija uCPU-a je u biti njegov BIOS odnosno permanento upisani kod koji se neće izgubiti nikada osim kod novog reprogramiranja. Obično uCPU može izdržati 10.000 reprogramiranja, što je i više nego dovoljno. Radna memorija uCPU je ekvivalentna RAM-u običnog računala, što znači da njen sadržaj nestaje nakon gašenja izvora napona, dok je EEPROM vrlo spora trajna memorija u koju sam uCPU može zapisati neke podatke koji će ostati u njoj i nakon gašenja. Kod uZappera upravo koristim EEPROM da bih zapisao zadnju korištenu frekvenciju koju kod idučeg pokretanja učitam i tako spasim korisnika od nepotrebnog biranja željene frekvencije.
Za razvoj programa za uZapper ja sam koristio ATMEL-ov AVR Studio koji u biti koristi engine od Visual Studia, a podržava programske jezike C i assembler. Sam assembler je bio drugi programski jezik kojega sam naučio u životu nakon BASIC-a 80-ih i to na 8-bitnom procesoru 6510 Commodora 64. Stoga mi samo programiranje u assembleru nije bio problem. Preporučam assembler za programiranje mikrokontrolera jer je ponekad potrebno biti vrlo precizan u tajmingu i točno računati koliko vremena je potrebno za izvršavanje pojedine instrukcije. Ovdje je bitno istaknuti da svaka instrukcija u assembleru traje jedan ili dva tzv. ciklusa koji je najčešće dvostruko manji od nazivne frekvencije na kojoj uCPU radi s tim da se ovo može mijenjati prilikom programiranja uCPU-a ('low power crystal oscilator' i 'full swing crystal oscilator'). Toplo preporučam odličan sajt koji je i više nego dovoljan za svakog tko počinje u assembleru općenito i to s AVR familijom uCPU-a: http://www.avr-asm-tutorial.net/avr_en
Programator sam nabavio preko e-baya. Model se zove Genius540. Radi savršeno, a praktički nema uCPU-a kojega ne može programirati.
Same ATMEGE sam isto nabavio preko e-baya i mogu reći da s cijenom od oko 20Kn po komadu predstavljaju pravu bagatelu.
Generiranje pravokutnog signala
S starim PIC16F84A uvijek sam generirao pravokutni signal na način da u programu postavim beskonačnu petlju koja će jedan digitalni izlaz dizati na jedinicu i spuštati na nulu nakon nekog vremena. Ovdje sam morao ručno ugrađivati petlje za usporenje (NOP instrukcije) kako bih pogodio željenu frekvenciju, te precizno izračunati trajanje svake instrukcije da bi bih dobio pravu frekvenciju i željeni omjer signal/pauza (duty cycle). Ovaj pristup ima mnoštvo mana: teško programiranje, činjenicu da uCPU non stop radi s punom snagom (vrti petlju), te nemogućnost postizanja visoke frekvencije jer je za izvršavanje najbrže petlje potrebno najmanje 3-4 instrukcije što praktično znači da ako mikrokontroler radi na 20Mhz da je maksimalna moguća frekvencija dosta niža (npr. s PIC16F84A na 20Mhz sam maksimalno mogao doći do oko 800Khz s ovom metodom).
Primjer neefikasnog koda za generiranje pravokutnog impulsa s 50% duty cycle za PIC16F84A:
MainLoop:
bsf PORTB,0
NOP
NOP
bcf PORTB,0
goto MainLoop
Već sam se pomirio da ću i s ATMEG-om ići istim putem, međutim u mnoštvu opcija našao sam da ima 16bitni timer koji može automatski generirati signal bez ikakve intervencije glavnog procesora, dapače CPU jedinica se jednostavno može poslati na spavanje, a kako ATMEGA ima dosta razvijen sistem uštede potrošnje struje, skoro cijeli mikrokontroler se može 'uspavati' i tako uštedjeti značajno. S ovom metodom uspio sam svesti potrošnju ATMEGE48 na svega 500uA za frekvencije do par stotina kiloherza. Dapače, ironično je da sama LED lampica skoro troši više struje nego cijeli mikrokontroler.
16 bitni Timer1 ima tzv. mod rada koji se zove: "Clear timer on compare match" ili tzv. CTC mod rada u kojem jednostavno svaki radni takt uvećava svoju vrijednost dok ne dođe do određene vrijednosti koja je zapisana u 16 bitnom registru OCR1A (OCR1AL low byte i OCR1AH high byte). Kad timer dođe do zapisane vrijednosti može se programirati da izazove promjenu logičnog stanja (toggle) na digitalnom izlazu PB1 ili OC1A ili output compare izlazu. Za ovakvo generiranje pravokutnog impulsa ne treba nikakva intervencija glavne procesorke jedinice i stoga glavni CPU može biti u stanju spavanja (SLEEP mode).
Frekvencija generiranog signala se vrlo lako može izračunati po formuli:
F = Fsys/2*N*(1+OCR1A)
- Fsys = sistemska frekvencija procesora.
- N je prescaler faktor timera koji efektivno usporava timer za dani broj: 1, 8, 64, 256, 1024 u odnosu na maksimalnu brzinu odnosno radni takt CPU-a.
- OCR1A je 16bitni register koji sadrži 'timeout' vrijednost timera i ima maksimalnu vrijednost od 65535
Frekvencija je u biti određena:
- sistemska frekvencija uCPU-a: frekvencija spojenog kristala (4Mhz je kod uZappera)
- sistemskim prescalerom: gore spomenuta tzv. sistemska frekvencija (brzina cijelog uCPU-a) se može usporiti za određeni faktor (1,2,4,8,...) koji se upisuje u CLKPR Clock Prescale Register (bitovi 0-3). Ovo se može dinamično mijenjati tijekom samog rada uCPU što čini ovaj mali chip vrlo fleksibilnim u uštedi energije.
- vrijednošću upisanoj u registar OCR1A koja maksimalno može biti 65535 (16bit), a koja u biti određuje rezoluciju timera odnosno preciznost tražene frekvencije. Idealno bi bilo da ova vrijednost bude što veća kako bi se lakše mogla odrediti frekvencija.
- prescalerom Timera1 koji u biti može dodatno usporiti Timer1 za određeni faktor. Faktor se određuje bitovima 0-3 u registru "TCCR1B – Timer/Counter1 control register B"
Prilikom određivanja zadane frekvencije nisam dirao timer prescaler već sam išao logikom da maksimalno smanjim sistemski takt kako bih s što manjom frekvencijom cijelog uCPU uspio pogoditi traženu frekvenciju. Najbolje je pogoditi sredinu skale odnosno gađati omjere prescalera da vrijednost OCR1A registra bude negdje na sredini, odnosno što dalje od 'krajeva', ni preniska, ni previsoka. Međutim, već kod 10Khz padam na vrijednosti OCR1A od oko 200, međutim, bez obzira na ovo vrlo precizno sam kalibrirao sve frekvencije koje sam htio uz pomoć osciloskopa. Međutim, za veću preciznost iznad 10Khz ipak je potrebno koristiti vanjski kristalni oscilator od 20Mhz.
Sam kod za generiranje pravokutne frekvencije je vrlo jednostavan nakon izračuna potrebne vrijednosti OCR1A registra (pošto je 8 bitni procesor mora se pisati u dva odvojena 8 bitna registra: OCR1AL (low byte) i OCR1AH (high byte).
Glavni dio koda za ATMEGA48 za generiranje pravokutnog signala na izlazu PB1/OC1A frekvencije 15HZ uz minimalni utrošak struje na način da je sistemska frekvencija od 4Mhz smanjena na 500Khz:
;-------------------------------------
; Initialize
;-------------------------------------
.def rmp = R16
;direction of all ports = output
ldi rmp, 0b11111111
out DDRB,rmp
out DDRC,rmp
;disable all interupts from timer0
ldi rmp, 0
sts TIMSK1,rmp
;enable OC1A port: PB1 and set CTC mode for timer1
ldi rmp, 0b01000000
sts TCCR1A,rmp
..........
;-------------------------------------
; Start Timer1 and generate 15Hz wave
;-------------------------------------
;stop timer1 (to be sure):
ldi rmp, 0b000000000
sts TCCR1B,rmp
;set OCR1A to 16640: 0x41 x 256 + 0x00
ldi rmp, 0x41
sts OCR1AH,rmp
ldi rmp, 0x00
sts OCR1AL,rmp
;decrease system clock to 500Khz from 4Mhz
ldi rmp, 128
sts CLKPR,rmp
ldi rmp, 3
sts CLKPR,rmp
;set timer1 prescaler to 1 and start timer
ldi rmp, (0b000000001)|(1<<WGM12)
sts TCCR1B,rmp
ret
..........
;-------------------------------------
; Main sleep loop
;-------------------------------------
loop:
ldi rmp,1
out SMCR,rmp ;idle mode (halts cpu and flash, all others are on-> consumption is lower then 500uA at Vcc=4V)
sleep
rjmp loop
Novi način pohrane i mijenjanja frekvencije:
Prije sam imao posebnu subrutinu (kao gornja 'Start Timer1 and generate 15Hz wave') za svaku pojedinu frekvenciju. Ovo je bilo nelogično s obzirom na čistoću koda i smanjenje zauzeća flash programske memorije ATMEGE-e, stoga sam počeo koristiti posebu data tabelu u koju sam za svaku frekvenciju definirao četiri vrijednosti:
Timer1 OCR1AH, Timer1 OCR1AL, TimerPrescaler TCCR1B, SystemFreqPrescaler CLKPR
Na ovaj način, za svaku pojedinu frekvenciju dovoljno je da umjesto cijele subrutine samo dodam jedan redak u data tabeli, npr. za 432Hz je dovoljno ovo:
Korak dalje je pisanje vrijednosti koje su neosjetljive na promjenu radnog takta mikrokontrolera. Znači cilj je da se definira vrijednost za registar OCR1A za frekvenciju kad je oscilator na 4Mhz, a zatim se putem određenog faktora ta ista vrijednost translatira tako da timer1 uvijek generira istu frekvenciju bez obzira na vrijednost vanjskog oscilatora. Npr:
gdje je FREQ_RATIO definiran kao:
.equ FREQ_RATIO=MCU_CLOCK/4000000
a MCU_CLOCK se definira na početku programa,npr: .equ MCU_CLOCK = 4000000
Sam kod za čitanje data tabele s frekvencijama (table_subroutine_freq_data) i namještanje parametara za timer1 se zasniva na indirektnom čitanju memorije programske memorije preko Z pointera i naredbe LPM kojom se vrijednost programske memorije s lokacije definirane u Z registru (R30,R31) stavlja u R0:
ldi ZH,HIGH(table_subroutine_freq_data*2) //load address of data table
ldi ZL,LOW(table_subroutine_freq_data*2)
add ZL,rmp ; add freq pointer (0-7) to ZL,ZH if passes 255 then test C and increase High (can't use adiw as adiw wants constant!!!)
brcc change_freq_2
inc ZH
change_freq_2:
;timer:
lpm ;read from flash mem to r0
WRITE_TIMER_REG OCR1AH,rAddrFlashData_Lo
adiw Z,1 ;move to next address
lpm ;read from flash mem to r0
WRITE_TIMER_REG OCR1AL,rAddrFlashData_Lo
;timer prescaler
adiw Z,1 ;move to next address
lpm ;read from flash mem to r0
ldi rmp,(1<<WGM12)
or rAddrFlashData_Lo,rmp
WRITE_TIMER_REG TCCR1B,rAddrFlashData_Lo
.if MCU_MODEL== ATMEGA_48
;system prescaler
adiw Z,1 ;move to next address
lpm ;read from flash mem to r0
ldi rmp, 128
sts CLKPR,rmp
sts CLKPR,rAddrFlashData_Lo
.endif
Sve vrijednosti za OCR1A register koje koristim u verziji uZappera s 16 frekvencija (B16):
; Timer_OCR1AH, Timer_OCR1AL, TimerPrescaler_TCCR1B, SystemFreqPrescaler_CLKPR (from 4Mhz)
.DB 0x41, 0x00, 0x01, 0x03 //15Hz = 16640,TimerPrescaler=1, System=3 500Khz)
.DB 0x12, 0x12, 0x01, 0x03 //54Hz = 4620, TimerPrescaler=1, System=3 500Khz)
.DB 0x08, 0x22, 0x01, 0x03 //120Hz = 2082, TimerPrescaler=1, System=3 500Khz) (120,01)
.DB 0x04, 0x84, 0x01, 0x02 //432Hz = 1108, TimerPrescaler=1, System=2 1Mhz)
.DB 0x03, 0xB9, 0x01, 0x02 //524Hz = 953, TimerPrescaler=1, System=2 1Mhz) (524,08)
.DB 0x01, 0x9F, 0x01, 0x03 //600Hz = 415, TimerPrescaler=1, System=3 500Khz) (600,9)
.DB 0x01, 0x5A, 0x01, 0x03 //720Hz = 346, TimerPrescaler=1, System=3 500Khz)
.DB 0x01, 0x56, 0x01, 0x03 //728Hz = 342, TimerPrescaler=1, System=3 500Khz) (728,8)
.DB 0x02, 0x7A, 0x01, 0x02 //787Hz = 634, TimerPrescaler=1, System=2 1Mhz) (787,36)
.DB 0x01, 0x1B, 0x01, 0x03 //880Hz = 283, TimerPrescaler=1, System=3 500Khz)
.DB 0x01, 0x41, 0x01, 0x02 //1552Hz = 283, TimerPrescaler=1, System=2 1Mhz)
.DB 0x01, 0x6E, 0x01, 0x01 //2724Hz = 368, TimerPrescaler=1, System=1 2Mhz) (2724)
.DB 0x00, 0xC6, 0x01, 0x01 //5000Hz = 198, TimerPrescaler=1, System=1 2Mhz) (5030)
.DB 0x00, 0xC6, 0x01, 0x00 //10000Hz = 198, TimerPrescaler=1, System=0 4MHz) (10049)
.DB 0x00, 0x2E, 0x01, 0x01 //21275Hz = 46, TimerPrescaler=1, System=1 2Mhz) (21275)
.DB 0x00, 0x20, 0x01, 0x01 //30000Hz = 32, TimerPrescaler=1, System=1 2Mhz)
Biranje frekvencije
Verzija s tipkalom:
Verzija uZappera s tipkalom (A7) mijenja frekvenciju na način da svaki pritisak na tipkalo izaziva skok na iduću frekvenciju i tako ukrug, u biti ovo je brojilo koje kreće od 1 ide do 7 s svakim tipkanjem i zatim ponovno kreće od 1. Kako bi korisnik vidio koja je trenutna frekvencija izabrana tri zelene LED diode prikazuju binarni kod trenutnog broja frekvencije (od 1 do 7 na izlazima PC0-PC2). Iako sam mogao staviti i osam frekvencija, nultu frekvenciju nisam mogao prikazati jer bi sve LED diode bile ugašene (decimalna 0 = 000 binarno), a zelene LED diode su mi ujedno služile i kao indikator da uređaj stvarno i radi. Zadnja korištena frekvencija se sprema u EEPROM i učitava se nakon svakog startanja, a korisnik može tijekom rada uređaja mijenjati frekvencije.
Tipkalo je spojeno na ulaz INT0/PD2. Promjena stanja na ovom ulazu izaziva interupt ili prekid izvršavanja koda te na osnovu tzv. interrupt jump tabele se izvršava interrupt rutina. Drugim riječima ATMEGA je konstantno u SLEEP modu dok Timer1 obavlja posao generiranja izlaznog signala automatski, kad ulaz INT0 promjeni stanje, ATMEGA se budi iz spavanja i izvršava interrupt rutinu. Bitno je istaći da komanda SLEEP stavlja ATMEG-u u stanje spavanje u tzv. 'Idle' modu iz kojega se može probuditi samo s interuptom bilo iz vanjskih izvora signala ili iz internih (time-out timera). Znači kad se dogodi interrupt, prvo se izvršava interrupt rutina, zatim se programski kod nastavlja izvršavati s sljedećom instrukcijom nakon SLEEP komande, stoga je SLEEP komanda i smještena u endless loop, kako bi se uCPU nakon buđenja opet uspavao i čekao na sljedeći interrupt.
Svaki izvor interupta ima svoj fiksni prioritet i svoj interrupt vektor koji u biti predstavlja JUMP naredbu kojom se izvršava interrupt rutina. Svi interrupt vektori su fiksno postavljeni na nultoj adresi Flash programske memorije. ATMEGA48 ima ukupno 26 raznih interrupt izvora i isto toliko interrupt vekora koji su poredani po prioritetu s tim da je na nultoj adresi postavljen interput s najvećim prioritetom. Prioritet označava koji će se interupt prije izvršiti ako se istovremeno generira više od jednog interupta. INT0 kojega sam ja izabrao ima vektor na adresi 0x001 i stoga ima najveći prioritet izvršavanja nakon samog RESETA. ATMEGA kod izvršavanja interrupt rutine automatski izvršava CLI naredbu kojom zabranjuje sve nove interrupte, za ovo vrijeme svi novo generirani interupti s INT0 ili bilo kojeg ulaza idu 'u vjetar' odnosno nikad ne bivaju obrađeni. Prilikom izlaska iz interrupt rutine, mora se koristiti naredba RETI koja automatski omogućuje nove interupte (izvršava SEI).
Tipkalo je spojeno s tzv. pull-up otporom na INTO ulaz: pull-up otpor uvijek drži ulaz na Vcc napon napajanja (logičku 1), a kad se tipkalo pritisne onda ulaz spaja na masu (logička 0).
Tipkalo spaja ulaz INT0 na masu
Iako se INT0 ulaz može programirati da reagira na ukupno 4 modaliteta promjene napona na ulazu, odabrao sam da reagira na stanje logičke nule. Logičan bi odabir bio hvatanje 'rise' ili 'fall edge' signala, ali iz nekog razloga ovo mi nije radilo. Problem kod INT0 i INT1 izlaza je da non stop generiraju interrupt kada je na ulazu logička nula, što mi je zadalo dosta glavobolja jer bi s jednim pritiskom odjednom skočio par frekvencija unaprijed umjesto da ide jedna po jedna.
Kako bih ovo izbjegao, morao sam koristiti najgluplju metodu koju sam se sjetio: a to je da nakon prve detekcije logičke nule na INT0 ulazu jednostavno zaustavim cijeli uCPU na određeno vrijeme i zatim ponovno krenem dalje u izvršavanje koda. Kako bih mogao ovo ostvariti unutar interrupt rutine za INT0 morao sam paliti dodatni 8-bitni Timer2, smanjiti sistemski takt na najnižu frekvenciju (32Khz) te staviti prescaler za Timer2 na maksimalnu vrijednost kako bih dobio delay od oko jedne sekunde za što mislim da je dovoljno da ne izazove nehotičan skok frekvencije. Znači INTO interrupt rutina je prvo ugasila generiranje signala (Timer1), omogućila interrupte s naredbom SEI, pokrenula Timer2 i stavila CPU u SLEEP mod očekujući interrupt Timera2 nakon jedne sekunde koji vrača izvršenje od točke prekida. Dosta prljava metoda jer koristim dvije nepreporučene taktike: omogućavanje interupta iz interuput rutine i stavljanje CPU-a u sleep mode iz interrupt rutine, ali ipak se pokazala efikasna.
Kod za obradu INT0 interrupta (tipkala):
.def rmp = R16
;--------------------------------------------------------------------------
; INTERRUPT vector table
;--------------------------------------------------------------------------
rjmp main ;this is actually reset int vector
rjmp int_int0 ;INT0 interrupt for freq change
reti
reti
reti
reti
reti
reti
reti
rjmp int_timer2 ;10
reti
reti
reti
reti
reti
reti
reti
reti
reti
reti ;20
reti
reti
reti
rjmp int_batt_low ;analog comparator
reti
reti
main:
;-------------------------------------
ENABLE EXT INT0
;-------------------------------------
;on D port enable D2 port as input (INT0)
ldi rmp, ~(1<<DDD2)
out DDRD,rmp
ldi rmp, 0b00000000 ;low level sensitive
sts EICRA,rmp
ldi rmp, 1 ;enable interrupt mask for INT0
out EIMSK,rmp
;-------------------------------------
; Main sleep loop
;-------------------------------------
loop:
ldi rmp,1
out SMCR,rmp ;idle mode
sleep ;when INT0 interrupt is processed uCPU is waked up and program will execute next command, in this case "rjmp loop" which will return uCPU back to SLEEP
rjmp loop
................................
;-------------------------------------
; INT0 interrupt routine
;-------------------------------------
int_int0:
;stop Timer1 (no waveform till we change frequency):
ldi rmp, 0b000000000
sts TCCR1B,rmp
;disable INT0 & AC interupt so that Timer2 can do his job..
cbi EIMSK,INT0
in rmp, ACSR
andi rmp,~(1<<ACIE)
out ACSR,rmp
;just to be sure that we are dealing with right times...
SET_CLOCK_MAX
;make delay to ensure that no double click occurs
DelayMS(300) //macro used from delay.asm, ti halts CPU for 300miliseconds, but instead of using NOP, timer2 is used to count delay
ldi rmp,1
out SMCR,rmp
sleep ;go to sleep...we hope that TImer2 will wake up us after 1 second -> after wake up code will continure to execute from next instruction after SLEEP command
cli ;disable interupts after we wake up from Timer2
rcall change_freq ; sobroutine that will change frequency (not shown here)
;enable INT0 & AC interupt
sbi EIMSK,INT0
in rmp, ACSR
ori rmp,(1<<ACIE)
out ACSR,rmp
reti
Verzija s DIP switchem:
Verzija uZappera (B16) s DIP switchem omogućava biranje 16 raznih frekvencija s tim da se frekvencija mora prethodno namjestiti prije paljenja uZappera. Izvedba je bila prilično jednostavna: PC1 do PC4 su programirani kao ulazi i to kao pull-up ulazi koji koriste interni pull-up otpor. Ova opcija ATMEGE da programira ulaze kao interne pull-upe, me je oduševila jer znatno smanjuje trud i napor lemljenja vansjkih pull-up otpornika. Sam kod je dosta jasan i samoobjašnjavajuć:
main:
;-------------------------------------
;ENABLE PORTS
;-------------------------------------
ldi rmp, 0b11100001 ;PC1-4 = inputs
out DDRC,rmp
;enable pull ups
ldi rmp,(0<<PUD)
out MCUCR,rmp
ldi rmp, 0b11111111 ;All PC inputs initialize to use internal pull up!!!
out PORTC,rmp
..........
;-------------------------------------
;READ PORTS
;-------------------------------------
change_freq:
in rmp,PINC
andi rmp,0b00011110 ;filter only our input bits
..........
Indikator stanja baterije
Za indikaciju stanja baterije sam koristio interni analogni comparator AC s tim da je na jednom ulazu korišten interni referentni napon od 1.1V (fixed bandgape reference voltage), a drugi ulaz je doveden s ulaza AIN1/PD7. AC komparator je iskonfiguriran da okine interrupt kad se izlaz mijenja (toggle). Pojednostavljeno rečeno AC komparator će uspoređivati dvije vrijednosti na svojim ulazima te generirati 0 na izlazu ako je napon na AIN1 ulazu veći od 1.1V ili 1 na izlazu ako je AIN1 ulaz manji od 1.1V, a svaka logička promjena ovog izlaza će generirati interrupt koji će ovaj event obrađivati. Običnim naponskim djeliteljem sam sveo napon od 8V na razinu od oko 1.05V, što izaziva okidanje AC komparatora i paljenje crvene LED lampice spojene na PC0 izlaz kad napon padne na 8V i ispod. Svaki ulazni napon veći od 8V neće okidati AC komparator. Međutim kako je naponsko djelilo dosta nestabilno, a AC komparator veoma osjetljiv katkad bih u tijeku rada dobivao lažne signale zbog fluktuacije napona napajanja tijekom rada, stoga sam morao dodati čak 2.2uF na AIN1 ulaz kako bih stabilizirao napon i dobio sigurno okidanje.
S 33kOhm i 10KOhm potenciometrom ulazni napon se može svesti na razinu oko 1.1V koji je referenti napon za AC komparator
Kod za uključivanje AC komaparatora i prikaz stanja istrošenosti baterije na izlazu:
.def rmp = R16
.equ bPinLED_BattLow = PC0
;--------------------------------------------------------------------------
; INTERRUPT vector table
;--------------------------------------------------------------------------
rjmp main ;this is actually reset int vector
reti
reti
reti
reti
reti
reti
reti
reti
reti
reti
reti
reti
reti
reti
reti
reti
reti
reti
reti ;20
reti
reti
reti
rjmp int_batt_low ;interrupt routine for analog comparator
reti
reti
............
;-------------------------------------
;enable Analog comparator:
;-------------------------------------
ldi rmp,0
sts ADCSRB,rmp
ldi rmp,(1<<AIN1D)|(1<<AIN0D) ;disable digital input buffers as AIN1 is now analog input
sts DIDR1,rmp
;enable AC, use internal reference voltage, enable AC interrupt, use mode to generate interrupt on output toggle
ldi rmp,(0<<ACD)|(1<<ACBG)|(1<<ACIE)|(0<<ACIC)|(0<<ACIS1)|(0<<ACIS0)
out ACSR,rmp
.............
;----------------------------------------------------------------------------------
; Interrupt routine for analog comparator: check ACO bit and set output to bPinLED_BattLow (PC0 output)
;----------------------------------------------------------------------------------
; Int will trigger on ACO toggle: if Vref>Vin then ACO will be set to 1, light LED only if ACO=1
int_batt_low:
in rmp,ACSR
sbrc rmp,ACO
sbi PORTC,bPinLED_BattLow ;if ACO is set, light the LED
sbrs rmp,ACO
cbi PORTC,bPinLED_BattLow ;clear LED
reti
Izlazni krug
ATMEGA daje savršeni pravokutni signal na svom izlazu OC1A, ali u TTL logici tj. od 0-5V. Napajanje za ATMEG-u sam čak smanjio i do 4V kako bih uštedio na potrošnji, stoga bi logička jedinica bila na oko 4V. Svaki izlaz ATMEGE može dati i do 20mA stoga bi se čak i sam izlaz uCPU-a mogao direktno priključiti na izlaze odnosno na metalne palice i elektrode zappera jer za zapiranje ne treba više od par mA struje. Međutim, 4V ili 5V je premali napon da bi takvo zapiranje imalo ikakvog efekta. Stoga sam na izlazu htio koristiti običan NPN tranzistor kao sklopku koji bi onda prespajao ulazni napon na izlaze za zapiranje: baza preko otpora spojena na OC1A izlaz ATMEGE, u kolektoru bi se nalazili izlazi za elektrode s možda nekim otporom u seriju, dok bi emiter bio spojen na masu. Na ovaj način se i inače pokreću releji i bilo koji vanjski uređaji koji troše dosta struje ili rade na većem naponu od samog uCPU-a.
Uobičajeni način kako digitalni mikrokontroleri s malom izlaznom snagom i naponom mogu upravljati s relejima ili bilo kojim drugim trošilom u drugom krugu veće struje i napona je korištenje običnog NPN tranzistora kao sklopke. Bazna struja je vrlo mala stoga ne opterećuje izlaz mikrokontrolera. Rc je dodan samo da zaštiti tranzistor od kratkog spoja. Inače samo ljudsko tijelo ima otpor reda veličine megaoma ako su suhe ruke, i možda reda veličine desetke kiloohma i manje ako su ruke navlažene slanom vodom. Kapacitivnost čovjeka kao trošila je isto dosta prisutna, stoga ovaj spoj čini mini RC mrežu ako se sonde zappera spoje na ZAP + i ZAP - izlaze.
Signali običnog NPN tranzistora kao sklopke su užasni za moja mjerila: veliko kašnjenje prilikom gašenja i sporo paljenje. Plava boja je napon na kolektoru, a žuta je izlaz ATMEGA48 spojen na bazu. Postoje razni trikovi kako poboljšati karakteristiku tranzistorske sklopke: Schotky dioda između kolektora i baze, kondezator iznad Rb otpora i slično. Ovo nešto pomaže.
I sve bi bilo idealno da nisam sve mjerio osciloskopm i ustanovio kako je signalna karakteristika običnog tranzistora kao sklopke za male struje više nego tragična: ogroman delay prilikom uključivanja i sporo gašenje. Probao sam sve trikove kako bih ubrzao tranzistor i napravio od njega idealnu sklokpku, probao sam par NPN tranzistzora, ali nikako nisam bio zadovoljan sve dok nisam shvatio da je to inheretno ponašanje tranzistora kao sklopke i da je jedina idealna sklopka korištenje dva komplementarna tranzistora NPN i PNP. Onda sam se sjetio da je isti problem rješen u tzv. FET driverima koji upravo imaju sve ono što sam želio: malo kašnjenje, odličan fall i rise time, odlične sink i drain karakteristike, te ulaze koji su osjetljivi na TTL logiku signala. Kako sam već radio s ovim zvjerkama logičan izbor mi je bio FET driver UCC27324. Vrlo kvalitetan dualni FET driver koji je čak i skuplji od same ATMEGE, ali zato ima odličan fall i rise time (<10ns), neznatno kašnjenje, te radi s naponima na izlazu od 4.5V do 15V. Može izdržati kratki spoj bez problema, što me isto oduševilo. I što je najvažnije potrošnja ovog drivera je zanemariva do 30Khz.
Vanjski krug je FET driver i opcionalni otpornik koji se koristi ako se napajaju vanjski orgonitni uređaji (zavojnice)
Ulazni napon sam ograničio na 12V s zener diodom kako bi zaštitio FET driver UCC27324 od prevelikog ulaznog napona, a i nisam htio dopustiti da signal s zapera ima voltažu veću od 12V, što smatram nekom sigurnom granicom za zapiranje. Prije sam stavljao zener od 10V radi nekih nepoznatih oscilacija koje je UCC27324 generirao kad mu je napon napajanja prešao 10V, međutim ili zbog nove bolje serije UCC27324 chipova ili zbog boljeg dizajna filter otpora i kondenzatora u odnosu na prethodne verzije uZappera, ovih oscilacija više nema, stoga se sad zapiranje preko DC adaptera vrši na nekih 11.5V, što je sasvim dobra voltaža za osjetabilni efekt zapiranja.
Izlazni krug je spojen direktno na izlaz UCC27324 bez ikakve zaštite. Ovo je bilo dosta riskantno, jer nema efikasne zaštite od kratkog spoja, a i napajanje vanjskih orgonitnih uređaja je onemogućeno jer oni u biti predstavljaju kratki spoj (Mobiusova zavojnica). Međutim, otkrio sam da stavljanjem otpora u seriju dosta kvarim fini strmi rast i pad napona pravokutnog signala (što je po meni glavni efekt za uspješno zapiranje), a kako je UCC27324 otporan na kratki spoj odlučio sam da početne postavke uZappera budu da izlaz bude bez ikakvog otpora kao zaštite. Ipak kako bih omogućio napajanje vanjskih orgonitnih uređaja postavio sam mini jumper koji omogućava spajanje otpora od 1KOhm na izlaz čime se neznatno kvari signal, ali zato omogućava sigurno napajanje vanjskih uređaja.
Signali s izlaza UCC27324 na 15Hz s 10V naponom napajanja: skoro savršen rise time ispod 10ns. Spike koji se javlja je zbog induktiviteta Mobiusove zavojnice unutar uZappera i zbog orgonitnog kabela koji isto ima zavojnicu ( skok do 16.6V s 10V napajanja). Slika lijevo je prazni hod, a desno pokazuje kako se 'spike' guši kad se čovjek priključi na izlaz, ali strmost promjene napona je i dalje prisutna.
Signali s izlaza UCC27324 na 15Hz s 10V naponom napajanja i serijskim otporom od 250Ohm. Slika lijevo je prazni hod na kojem se skoro ne vidi onaj 'veseli' spike, a desna slika pokazuje tipično RC punjenje s tim da je C u biti čovjek spojen na elektrode koji se puni preko 250Ohm. Zbog ove super loše karakteristike signala kad se koristi serijski otpor u svojim verzijama zappera sam izbjegavao koristiti otpor u seriji na izlazu. Napomena: ovo je prikaz na svega 10uS, kad se gleda cijeli signal na većoj vremenskoj skali ova deformacija je neuočljiva, ali mene ipak boli jer guši onaj strmi rast i pad signala za koji osobno mislim da je vrlo bitan.
Ulazni krug
Ulazni krug se sastoji od naponskog regulatora LM317 koji u biti snižava ulazni napon na fiksnu vrijednost od 4.1V za napajanje ATMEGE48 (radi manje potrošnje) koja može raditi do maksimalnih 5.5V. 4.1V sam izabrao kao kompromis jer ATMEGA može raditi i na nižim naponima (do 3.3V) međutim ulazi izlaznog FET drivera UCC27324 su osjetljivi na TTL vrijednosti, stoga je sigurna logička 0 od 0 do 1V, a sigurna logička jedinica od 4 do 5V. LM317 u 'idle' stanju bez spojenog potrošača vuče oko 1.6mA što je iznimno nisko. Ako se ovome zbroji potrošnja ATMEGE od oko 500nA te LED lampica dođe se do brojke od oko 2.7mA ukupne potrošnje struje za frekvenciju od 15Hz na naponu napajanja od 9V što je po meni iznimno malo i jamči dugi vijek baterije.
Druga komponenta ulaznog kruga je dio za smanjivanje ulaznog napona na 12V iz razloga kojega sam već opisao u prethodnom pasusu. Kako bih sačuvao zener od prekomjerne struje ako se spoji na izvor napajanja veći od 12V, u seriju sam dodao otpor od 100Ohma. Iako je potrošnja struje iznimno mala, ipak se to sve na kraju zbroji i dosta utječe na napon, međutim utjeće samo ako se koristi 9V adapter, kada pad napona na schotky diodi i 100Ohm otporu biva oko 0.6V zajedno, te efektno spušta napon zapiranja s nekih 9.1V na 8.5V. Stoga je idealan adapter onaj od 12V kad je efektivni napon zapiranja oko 11.5V.
Schotky dioda na ulazu je stavljena da se spriječi spajanje obrnutog polariteta preko adapter ulaza jer neki jeftini adapteri imaju sklopku za promjenu polariteta te je mogućnost greške velika, dok kod baterije ovo skoro pa nije moguće jer 9V jack za bateriju ovo onemogućava, stoga kako bih izbjegao nepotrebni pad napona od 0.3V na diodi, baterijski ulaz 'preskače preko diode i 100Ohm otpora i ide direktno na LM317, čime je iskoristivost 9V maksimalna. Baterija je inače spojena preko tropolnog DC jacka koji automatski prekida masu s baterije ako se uključi adapter (mehanička sklopka unutar DC jacka).
Ulazni krug snižava napon za napajanje ATMEGE48
ATMEGA8 vs. ATMEGA48
ATMEGA8 je dva do tri puta jeftiniji mikrokontroler od ATMEGA48, a ima skoro istu funkcionalnost kao i ATMEGA48 uz čak veću količinu memorije, stoga sam ga odlučio isprobati i moram reći da je upotrebljiv za uZapper, ali ATMEGA48 ima par krucijalnih prednosti:
- ATMEGA48 ima manju potrošnje struje na istim postavkama i istoj generiranoj frekvenciji. ATMEGA8 u pravilu troši i do 1mA više kod generiranja frekvencija u uZapperu. Ovo nije puno, ali isto malo smeta.
- ATMEGA8 nema system clock prescaler koja omogućava dinamično smanjivanje radnog takta CPU-a, što je funkcija kojom sam štedio dosta struje kod ATMEGE48 na način da smanjim takt cijelog CPU-a kod određenih frekvencija, ako bi se dana frekvencija dala namjestiti i s manjim radnim taktom.
- ATMEGA8 nema dodatne ulaze koje mogu generirati interrupt (osim INT0 i INT1). Naime kod ATMEGA48, svi ulazi se mogu programirati da trigeriraju interrupt (PCINT0,1,2). Ovo nije toliko bitno kod uZappera, ali kod ostalih aplikacija mi se čini dosta bitnim.
- ATMEGA8 može ići do maksimalno 16Mhz, a ATMEGA48 do 20Mhz. Ovo je najmanje bitno, ali eto vrijedi spomenuti.
- ATMEGA8 ima više memorije: 8Kb Flash/1024byte SRAM/ 512 byte EEPROM versus ATMEGA48: 4Kb Flash/512 byte SRAM/ 256 byte EEPROM. Iako ovo za uZapper ne znači ništa jer mi cijeli kod stane u 400 byta, ipak je fino iza leđa imati više memorije.
U konačnici mislim da se ATMEGA8 isto može kvalitetno koristiti za uZapper, a malo veća potrošnja struje (s otprilike 3mA na 4mA) je zanemariva. Kod za uZapper sam posebno prilagodio da radi i s ATMEGA8, s tim da su ipak neke komande drukčije za ova dva mikrokontrolera pa sam dosta često u kodu koristio preprocesorske naredbe tipa: .if MCU_MODEL== ATMEGA_8.
Smanjivanje potrošnje: low vs. full swing crystal oscilator
Kod izrade uZappera dosta sam se fokusirao na smanjivanje potrošnje struje. Uglavnom sam sljedio smjernice dane u uputama za ATMEGA48 mikrokontroler koje napominju da se isključe svi moduli koji su nepotrebni (A/D konvertor, timer0,...) i da se prilikom programiranja isključe WatchDog timer, Brown-out detector i ostali moduli koji se mogu isključiti (tzv. Fuse bits) samo prilikom programiranja Flash memorije ATMEGE s programatorom.
Zaključio sam da je najveća ušteda u potrošnji struje moguća odabirom moda kristalnog oscilatora koji u principu ima dva moda:
- Full Swing crystal oscilator mod koji troši više struje, ali omogućava mikrokontroleru da koristi oscilator vrijednosti preko 8Mhz (do 16Mhz za ATMEGA8 ili do 20Mhz za ATMEGA48)
- Low Frequency crystal oscilator mod troši manje struje, ali u ovom modu, mikrokontroler može raditi do maksimalno 8Mhz.
Testiranjem sam ustanovio da uZapper s ATMEGA48 troši od 2.4mA-3.3mA za generiranje frekvencija od 15Hz-30Khz u Low modu, dok u Full modu troši 3,2mA-4.1mA s istim rasponom frekvencija. Napominjem da je ovo potrošnja cijelog sklopa uZappera A7 (s LED diodama, FET driverom i LM317) pri ulaznom naponu od 9V. uZapper s ATMEGA8 s istim rasponom frekvencija troši: Low mode=3.6mA-4.1mA, Full mode=4.3mA-4.7mA.
Full/Low mode se određuje s CKSEL3 fuse bitom kod ATMEGA48: CKSEL3=0 (Low), CKSEL3=1 (Full).
Full/Low mode se određuje s CKOPT fuse bitom kod ATMEGA8: CKOPT=0 (Low), CKOPT=1 (Full)
Struktuiranje koda: delay.asm i eeprom_util.asm
Naviknut na rad u objektno orijentiranom C++, asembler za AVR mikrokontrolere mi se čini dosta 'rustikalnim' programskim jezikom, ali uz malo truda i taj asemblerski kod se da fino srediti. Stoga sam odvojio rutine koje mogu koristiti i u ostalim aplikacijama i napravio dva mala 'liba':
delay.asm: lib koji ima rutine za delay petlje koje se dosta često koriste kod programiranja ATMEGE. Prednost ovog liba je što ima dva moda rada:
- prvi koristi timer2 za delay, što inače koristim i u uZapperu jer je ova metoda puno energetski učinkovitija jer sam CPU 'baca' u sleep mode dok se izvršava određeno čekanje. Nedostatak ovog moda je zauzimanje timera2.
- drugi mod je široko uobičajen, a to je korištenje NOP naredbi u petlji. Ovaj pristup nije loš za manja čekanja, a mana je što CPU radi s 100% snage i samim tim troši maksimalnu energiju.
Rutine u delay.asm su 'wrapirane' makro naredbama, stoga je upotreba istih vrlo jednostavna. Primjeri:
DelayMS(10) - delay 10miliseconds
DelaySEC(10) - delay 10seconds
eeprom_util.asm: lib za pisanje/čitanje u eeprom memoriju. Ima u biti dvije makro naredbe: WRITE_EEPROM_AT i READ_EEPROM_AT. Primjer:
ldi rmp,0xAA
WRITE_EEPROM_AT 120
Fatalni interrupt
Prilikom testiranja rada uZappera, a i ostalih konstrukcija u kojima koristim ATMEGA mikrokontrolere naišao sam na čudno ponašanje sklopa, koje nisam nikako mogao vjerno reproducirati. Manifestiralo se na način da je timer1 prestajao raditi iz sasvim nepoznatog razloga. Otkrio sam da sam u programiranju napravio početničku grešku, a to je korištenje istog registra u glavnoj programskoj petlji i u samoj interrupt rutini. Naime kad se koriste isti registri u glavnoj programskoj petlji i interupt rutinama onda je potrebno privremeno spremiti sadržaj svih registara (i status registra) na stack s naredbama PUSH, te ih pri izlasku iz interrupta vratiti nazad s POP naredbama. Kako ja u glavnoj petlji nemam nikakav smislen kod već samo stavljam CPU u sleep mod (vidi dole), smatrao sam da se ne trebam uopće zamarati s ovime, ali grdno sam se prevario
; Main sleep loop
;-------------------------------------
loop:
ldi R16,1
out SMCR,R16
sleep
rjmp loop
Naime, ovakav kod, koliko god nevino izgledao podložan je sljedečoj grešci: ako se interrupt dogodi između komande ldi R16,1 i out SMCR,R16 tada je moguće da interrupt rutina promjeni stanje R16 registra i da u SMCR register ne bude zapisana očekivana vrijednost (1 u ovom slučaju) već neka nepoznata koja može uzrokovati da CPU uopće ne ide u sleep mode ili da ide u neki drugi mode (power down) u kojem su svi moduli i interupti onemogućeni što je upravo fatalno. Najgore od svega je što se greška teško može otkriti jer se javlja samo katkad.
Rješenje za ovaj problem sam našao u korištenju posebnog registra umjesto R16 za koji znam da se ne koristi nigdje u niti jednoj subrutini. Što je puno elegantnije rješenje nego korištenje stacka.
Izlazni signali uZapper-a i zappera s tendollarzapper.com
S svojim osciloskopom sam pokušao ustanoviti dvije stvari: točnost i stabilnost frekvencija mog orgonskog uZappera i običnog Z4 zappera te utjecaj orgonitnog bloka na signal. Rezultati:
uZapper:
uZapper: frekvencija od 432Hz je stabilna i precizna
Lijevo: uZapper zahvaljujući orgonitnom bloku i Mobiusovoj zavojnici ima povečani naponski skok i do 13.6V s nazivnih 9V napajanja prilikom prelaska pravokutnog signala iz 0 do 9V. Kao što sam u prethodnom tekstu elaborirao, moje skromno mišljenje da je ovaj h pattern impulsa zaslužan za privlačenje dodatne orgonske energije u sustav.
Desno: rast do skoro 14V se događa unutar 10nS što je vrlo oštar gradient, odnosno promjena napona u jedinici vremena (dV/dT)
Z4 zapper s tendollarzapper.com:
Lijevo: Z4 zapper na testiranju, ima ukupno 3 različite frekvencije: 15Hz, 2.5Khz i 30Khz
Desno: Z4 zapper ima SMD CMOS verziju timera 555 koji generira pravokutni impuls zbog čega je potrošnja struje izvanredno mala (6mA). Frekvencija od 15Hz je korektna kao i kod večine zappera s 555 timerom.
Lijevo: Z4 ima korektan gradient rasta od 25ns, malo sporiji nego uZapper, ali sasvim zadovoljavajući. 555-ica još ima snage ispod haube.
Desno: nažalost Z4 zbog RC mreže gubi preciznost već na 2.5Khz, gdje pokazuje 2.41Khz umjesto deklariranih 2.5Khz
Z4 pokazuje ogromno odstupanje na 30Khz: 27.27Khz. Na višim frekvencijama vide se sve mane nestabilnosti RC mreže koja definira frekvenciju impulsa 555-ice.
Z4 zapper s tendollarzapper.com + orgonitni kabeli:
Lijevo: Z4 je spojen preko kabela koji svojim plus polom prolazi kroz orgonitni blok.
Desno: Vidi se utjecaj orgonitnog bloka na signal Z4: naponski skok postaje veći i s 10.8V raste do 12.4V. Induktivitet unutar orgonitnog bloka obavlja svoj posao i zajedno s metalnim ostacima u orgonitu daje ipak malo kvalitetniji impuls s stanovišta generiranja i dovlačenja dodatnog orgona (veća promjena napona, veći 'spike')
Upute za izradu uZappera A7
Opis: verzija uZappera A7 ima 7 frekvencija koje se mogu preprogramirati po želji. Frekvencije se biraju tipkalom (skače se na iduću), a redni broj frekvencije (od 1-7) je prikazan s tri LED diode u binarnom formatu. Zadnja korištena frekvencija se pamti. Crvena led dioda označava da je baterija istrošena. Postoji jumper kojim se može na izlazu postaviti zaštitni serijski otpor od 1KOhm što je nužno za napajanje vanjskih orgonitnih uređaja koji u biti predstavljaju kratki spoj.
Prikaz elemenata zappera
Korisničke upute: uZapper A7
ATMEGA48/ATMEGA8 programiranje:
uZapper A7 assembler kod je dosta objašnjen u prethodnim poglavljima, tako da je prilično razumljiv. Kod je napravljen za AVR Studio 5, ali same *.ASM datoteke su kompatibilne s bilo kojom verzijom AVR Studia. Kod se može izvršavati i za ATMEGA8 i za ATMEGA48 mikrokontrolere, samo je potrebno definirati dva parametra:
.equ MCU_MODEL = ATMEGA_48 //(ili ATMEGA8)
.equ MCU_CLOCK = 4000000 //(radni takt)
Kod zauzima nevjerovatnih 468 bajtova što me vraća u prošlost i C64 programiranje kad su kvalitetne igre i programi bez problema stali u 64Kbyte radne memorije, što je danas cache memorija nekog slabijeg CPU-a.
Binary hex dumpovi za uZapper A7 za dole navedene frekvencije koji se direktno mogu 'spržiti' na mikrokontroler s bilo kojim programatorom:
Freq1 (001) =15Hz
Freq2 (010) =54Hz
Freq3 (011) =432Hz
Freq4 (100) =720Hz
Freq5 (101) =880Hz
Freq6 (110) =1552Hz
Freq7 (111) =30Khz
Fuse bits su konfiguracijski bitovi za mikrokontroler koje je potrebno namjestiti u programu za programiranje Flash memorije s hex binarnom datotekom. Važna napomena: fuse bits se zapisuju kao binarni inverzi ili po ATMEL logici 1 označava unprogrammed (unset) stanje, a 0 programmed (set).
ATMEGA48 fuse bits:
bit7 = CKDIV8 = 1
bit6 = CKOUT = 1
bit5,4 = SUT1,0 = 00
bit3,2,1,0 = CKSEL3,2,1 = 1101 (Low frequency crystal mode + slowly rising power = niska potrošnja struje)
Fuse_low_byte=0xCD
bit7 = RSTDISBL = 0
bit6 = DWEN = 1
bit5 = SPEIN = 0
bit4 = WDTON = 1
bit3 = EESAVE = 1
bit2,1,0 = BODLEVEL2,1,0 = 000 (Brown-out detector is disabled)
Fuse_high_byte=0x58
ATMEGA8 fuse bits:
bit7 = RSTDISBL = 0
bit6 = WDTON = 1
bit5 = SPEIN = 0
bit4 = CKOPT = 1 (Low frequency crystal mode = niska potrošnja struje)
bit3 = EESAVE = 1
bit2 = BOOTSZ1 = 0
bit1 = BOOTSZ0 = 0
bit0 = BOOTRST = 1
Fuse_low_byte=0x59
bit7 = BODLEVEL = 1
bit6 = BODEN = 1
bit5,4 = SUT1,0 = 11 (slowly rising power)
bit3,2,1,0 = CKSEL3,2,1,0 = 1111 (for external oscilator between 3 and 8Mhz)
Fuse_high_byte = 0xFF
Električna i montažna shema:
(Klikni za veću sliku) Napomena: iako u shemi pise Vzap 11.5V, ovo se odnosi samo kad je prisutno napajanje iz DC adaptera od 12V i više. Inače kod izvora od 9V, normalno da je vrijednost Vzap ispod 9V.
Montažna shema (dimenzije pločice: 56mmx35mm) uZappera je napravljena u SprintLayout CAD aplikaciji koji vrijedi svake lipe i toplo je preporučam. Postoji i besplatni viewer kojim se shema može vidjeti i isprintati: Sprint Layout Viewer 6.0
uZapper A7 u izradi (klikni za veću sliku)
Dijelovi:
ATMEGA48 20PU (ili ATMEGA8-16)
Banana Speaker Plug Female (Red & Black)
Cap. 15pF x 2
Cap. 470nF
Cap. Electrolytic 1uF 50V
Cap. Electrolytic 4,7uF 50V
Crystal Osc. 4.000Mhz
DC JACK 5.5x2.1mm
Diode Schotky 1N5819 1A40V (može i 1N5822)
Diode Zener 12V 1W
DIP 28 socket
DIP 8 socket
FET Driver UCC27324
LED Green 3mm 15000mcd x3
LED Red 3mm 15000mcd
LM317LZ
Plastic Box Case DIY 99.5 x 59.5 x 25mm
R 1.5K
R 100
R 10K x 3
R 1K x 2
R 2.2K
R 22K (20K)
R 33K
Switch Mini SPDT Guitar Toggle Switch ON-ON
Switch Tactile Push Button 6 X 6 X 9.5mm
Trimmer 10K (multiturn precise)
Photo vitroplast 5.6x3.5cm
9V battery connector
Foto postupak s običnom 100W žaruljom
Napomene:
- tiskanu pločicu radim foto postupkom i to na način da montažnu shemu isprintam na grafo foliju za laserski pisač te istu stavim na foto pločicu, pritisnem s tankim staklom, a zatim 20 minuta izlažem svjetlosti obične 100W žarulje koja je obavijena aluminijskom folijom da se snop svjetla usmjeri bolje, a na visini od nekih 20-30cm.
- za potenciometar na AIN1 ulazu sam koristio precizni trimmer od 10kOhma (tzv. plava kockica) koji ima stotine okretaja (punih krugova) nasuprot možda jednom okretaju običnog trimmera.
- ATMEGA48 sam specifično tražio chip s oznakom ATMEGA48-20PU koji označava ATMEG-u koja može raditi do 20Mhz, 10PU radi maksimalno na 10Mhz
- LED diodice su 3mm diodice s vrlo malim padom napona i visokom osjetljivošču, stoga na 4V preko 10KOhm svjetle sasvim dobro, a troše neznatnu struju.
- za naponski regulator sam koristio slabiju verziju LM317LZ (oznaka LZ) koja mislim da može maksimalno dati 100mA, što je više nego dovoljno, ali zato vrlo malo troši te fino stane u kučištu.
- DC jack za adapter je tropolni i omogućava automatsko odspajanje mase baterije kad se adapter uključi.
Dijelovi su uglavnom kineski, nabavljeni preko e-baya.
Files & links:
- UCC27324
- ATMEGA48 datasheet
- ATMEGA8 datasheet
- ATMEL AVR Studio
- AVR assembler tutorial
- Programator za ATMEL Genius540
Upute za izradu uZappera A31
Opis: verzija uZappera A31 je malo unaprijeđena A7-ica s 30 frekvencija koje se mogu preprogramirati po želji te s tzv. sweep modom u kojem zapper sam mijenja tih 30 frekvencija počevši od najmanje pa sve do najveće s tim da svaku drži aktivnu 1 minutu. Indikacija trenutne frekvencije se prikazuje s pet LED dioda (binarni kod), a zadnja peta LED-ica ujedno služi i kao inidikator slabe baterije. Indikacija istrošene baterije je ostvarena blinkanjem pete LED-ice. uZapper A31 je u biti evolucijski korak u odnosu na A7 s većim mogućnostima i ispravljenim manama starog zappera.
A31 (black edition), pogled 'ispod haube'
Korisničke upute: uZapper A31 (hrvatski) i instructions for uZapper A31 (engleski)
ATMEGA8 programiranje:
uZapper A31 assembler kod u odnosu na kod za A7 ima dodatak za sweep mode i za hendlanje blinkanja pete LED-ice kao battery low indikatora. Za sweep funkcionalnost sam koristio timer2, a timer0 za blinkanje battery low indikatora. Kod je dosta jednostavan i uredno komentiran, stoga nema potrebe za daljnje pojašnjavanje. Iako je kod napisan da se može izvršavati i na ATMEGA48 chipu, A31 uglavnom radim s ATMEGA8 s defaultnim radnim taktom od 8Mhz. Prepocersorske naredbe:
.equ MCU_MODEL = ATMEGA_8 //(ili ATMEGA_48)
.equ MCU_CLOCK = 8000000 //(radni takt)
.equ ENABLE_SWEEP_MODE = 1 //enable/disable sweep mode
Kod zauzima 682 byta: ATMEGA8 Hex Dump (4Mhz)
Fuse bits, odnosno bytes su isti kao i kod A7 verzije.
Električna i montažna shema:
(Klikni za veću sliku)
Promjene u odnosu na A7:
- A7-ica je znala sama mijenjati frekvenciju bez pritiska na tipkalo ili preskakati frekvenciju kod jednog pritiska. Kako bih to ublažio dodao sam 1nF kondenzator paralelno s tipkalom, te dodatno izolirao samu pločicu tipkala (vruči silikon). Iako mislim da je glavni uzrok ovog ponašanja bio u starom kodu koji nije pravilno obrađivao interrupt (vidi fatalni interrupt)
- Umjesto 1uF kondenzatora, stavljam 2.2uF paralelno s potenciometrom/naponskim dijelijeteljem koje služi za detekciju istrošenosti baterije, jer sam katkad dobivao lažne signale da je baterija istrošena. Opet mislim da ovo nije značajno, ali svakako pomaže.
- Kod zapiranja s botunima, uZapper može izazivati opeklinice ili iritaciju kože ako se dugo drži na jednom mjestu na koži. Kako bih taj efekt smanjio, stavio sam dodatni otpor R7=150Ohm serijski na žici koja je spojena s botunima s ciljem da se malo smanji naponski spike i ublaži/otupi signal koji ide kroz botune, a koji je mogući uzročnik takve pojave.
- Sada po defaultu koristim 8Mhz kristal koji neznatno povećava potrošnju, ali zato pruža mogućnost preciznijeg namještanja frekvencija. A umjesto FET drivera UCC27324 koristim UCC27424 koji je nešto jeftiniji, a ima istu funkcionalnost i karakteristike kao i njegov brat.
Montažna shema (dimenzije pločice: 56mmx35mm) uZappera je napravljena u SprintLayout CAD aplikaciji. Postoji i besplatni viewer kojim se shema može vidjeti i isprintati: Sprint Layout Viewer 6.0.
Napomene:
- oznake elemenata na montažnoj šemi su usklađene s el. schemom
- tiskane pločice za A31 sam naručio da budu strojno izrađene, jer sama izrada pločica foto postupkom nije problematična koliko je naporno bušenje rupica (113 sve skupa), a strojno izrađene pločice su neznatno skuplje, a iznimno stabilnije i kvalitetnije nego ručno izrađeni primjerci
- kako nema mjesta za dodatne oznake na pločici, samo kratki opis: kraj DC-jacka dvije rupice su predviđene za spajanje 9V kabla za bateriju. Glavni prekidač se spaja na rupicu kraj Zener D2 diode. Na K- se spaja jedan botun s poleđine zappera. Glavni izlaz signala koji potom ide kroz Mobius coil/orgonitni blok zappera je rupica kraj plus oznake kondezatora C6
- dodatna rupica na masi kraj C2 i rupica na dovodnoj liniji napjanja nasuprot K- rupice služe za spajanje sklopića za podržavanje pozitivnog offseta koji se naknadno spaja (vidi detalje u opisu sklopa za pozitivan offset).
uZapper A31 s strojno izrađenim pločicama što ipak uvećava stabilnost sklopa
Dijelovi:
ATMEGA8-16PU
Banana Speaker Plug Female (Red & Black)
Cap. 15pF x 2
Cap. 1nF
Cap. 470nF
Cap. Electrolytic 2.2uF 50V
Cap. Electrolytic 4,7uF 50V
Crystal Osc. 8.000Mhz
DC JACK 5.5x2.1mm
Diode Schotky 1N5819 1A40V (može i 1N5822)
Diode Zener 12V 1W
DIP 28 socket
DIP 8 socket
FET Driver UCC27424
LED Green 3mm 15000mcd x5
LM317LZ
Plastic Box Case DIY 99.5 x 59.5 x 25mm
R1 100/2W (ulazni otpor)
R 10K x 5 (otpori za LED-ice)
R9/R11 1K x 2
R7 150
R8 2.2K
R10 22K (20K)
R12 33K
Switch Mini SPDT Guitar Toggle Switch ON-ON
Switch Tactile Push Button 6 X 6 X 9.5mm
Trimmer 10K (multiturn precise)
Photo vitroplast 5.6x3.5cm
9V battery connector
Files & links:
Upute za izradu uZappera B16 mini
Opis: verzija uZappera B16 mini može generirati 16 mogućih frekvencija pravokutnog signala. Namijenjen je prvenstveno pokretanju orgonitnih uređaja, ali može služiti i za zapiranje. Frekvencije se biraju DIP prekidačem. U verziji V9 na izlazu je dodan jaki FET tranzistor (FET IRF740) koji omogućava generiranje signala i do 10A jakosti struje. Izbačen je indikator istrošenosti baterije, kako bi se sam FET mogao dislocirati što dalje na pločici i kako bi se hladnjak na FET-u mogao nesmetano pričvrstiti. Istovremeno postoji mogućnost korištenja pravokutnog signala i na stari način u krugu slabe struje (direktni izlaz s UCC23724).
Opremljen je tropolnim šasijskim konektorom koji omogućava spajanje vanjskog izvora napajanja (npr. akumulator). Na ovaj tropolni konektor je izveden i Drain s FET tranzistora koji omogućava spajanje Mobiusove zavojnice (orgonitnog uređaja koji se želi pogoniti ovim zapperom) u krugu jake struje. Kako komponente ne bi pregorjele usred jakih naponskih implusa uvijek je preporučljivo staviti zaštitni otpor u seriji od 5W vrijednosti od 39-68Ohm.
Verzija B16mini: ogoljeni uZapper A7, ali s većim brojem frekvencija i s FET tranzistorom jake struje namijenjen za pokretanje orgonitnih uređaja
Glavni princip rada ovog tzv. 'radiantnog' zappera je omogućavanje prolaska jake struje kroz Mobiusovu zavojnicu. Osim što je generiranje orgona proporcionalno jakosti struje koja prolazi kroz zavojnicu, pravokutni signal koji prolazi kroz zavojnicu stvara jake naponske impulse u trenutku kad signal prelazi iz stanja 12V u 0V. Ovo klasična elektro škola opisuje kao povratna elektromotorna sila, a fizikalno je opisano kao pokušaj zavojnice da održi konstantan magnetski tok, na način da pad protoka struje, zamijeni s povećanim naponskim impulsom. Ovaj impuls je često smrtonosan za elektro komponente jer nerijetko naraste i do nekoliko desetaka ili stotina puta veći od napona napajanja, stoga se svugdje u elektro shemama gdje se koristi zavojnica ili elektromotor, ta zavojnica prespaja s diodom usmjerenom prema izvoru napajanja kako bi se taj impuls 'vratio' k izvoru i kako bi se spasile ostale komponente u sklopu od ovog naponskog šoka.
Međutim, John Bedini, izumitelj monopolnog motora i ostalih uređaja iz područja 'free-energy' tvrdi da ovaj naponski skok nema veze s povratnom EM silom (BEMF), već da je ovo skupljena energija iz vakuma, znači novonastala energija. Ostaje samo pitanje kako ovaj naponski impuls iskoristiti i da li se stvarno može dobiti 'overunity' znači više energije na izlazu nego na ulazu. John Bedini tvrdi da bi ulazni trošak energije trebao biti samo na procesu 'switchanja', što bi moglo biti relativno malo, a izlazna energija bi se trebala kupiti ili kondezatorom ili baterijom. Naime, on je ustanovio da sve kemijske baterije vole ove visoke napone, stoga je izumio princip tzv. hladnog punjenja baterija u kojem stare, istrošene, pa čak i nepunjive baterije može napuniti ponovno s ovim naponskim skokovima, ali bez tzv. overunity efekta. Za ovu novo-generiranu energiju, on tvrdi da je energija iz vakuma ili tzv. radiantna energija.
uZapper B16 u načinu spajanja prikazanim gore na slici generira ovakve naponske impulse koje nažalost pušta da teču put mase preko IRF740 FET-a, međutim sami ti impulsi generirani u Mobiusovoj zavojnici bi trebali dovlačiti novu energiju iz prostora, radiantnu energiju, odnosno orgonsku energiju koja je samo još jedno lice sveprožimajuće energije kojom smo svi okruženi. Kako bi ovi naponski impulsi bili što veći potrebno je da rast i pad (rise/fall time) pravokutnog signala bude što manji, a UCC27324 i FET IRF740 to mogu napraviti unutar par desetaka nS, što je iznimno strmo.
Ovdje je jedino problematičan serijski zaštitni otpor koji dosta guši ovaj naponski impuls i koji na sebi disipira večinu energije u obliku topline. Rješenje za ovo je korištenje nesimetričnog signala koji će imati omjer signal/pauza (duty cycle) taman dovoljan da 'napuni zavojnicu' energijom kako bi se mogao generirati naponski impuls i onda zaštitni otpor ne bi trebao, a potrošnja energija bi bila puno manja. Međutim, kako za zappere ipak želim zadržati duty cycle na 50% onda to ovdje nisam implementirao.
Način spajanja Mobiusove zavojnice (L2) orgonitnog uređaja na B16 mini radiantni zapper
Objašnjenje spajanja Mobius zavojnice na uZapper (na gornjoj slici): izvor napajanja mora biti što jači, najbolje je auto-akumulator ili jači ispravljač. Napajanje zappera i zavojnice mora biti isto (plus pol zavojnice je spojen na Vin zappera). Zaštitni otpor R2 služi za zaštitu sklopa od pregaranja, (ograničava maksimalnu struju kroz FET i Mobius), a tijekom rada na njemu se disipira glavnina topline, stoga je 5W minimum. Toplina se isto disipira i na FET-u, stoga mora biti opremljen hladnjakom, ako se koristi R2 niskih vrijednosti ili auto-žarulja umjesto R2. Naponski 'spikeovi' se mogu izmjeriti na Drainu FET-a, a idu preko FET-a u masu (minus pol). Pravokutni signal zappera u biti niskom strujom određuje rad FET IRF740 kao sklopke preko njegovog Gate-a i stoga u strujnom krugu od plus pola baterije preko Mobiusa L2, otpora R2 i FET-a određuje kad će teći struja, a kada neće, odnosno krivulja signala u ovom krugu ima isti pravokutni oblik kao i sam signal zappera. Može se reći da FET u biti transformira nisku struju pravokutnog signala u jaku struju.
Kod ovog moda rada uZappera B16 mini potreban je oprez ako se prelaze vrijednosti struje iznad jednog ampera odnosno ako se koristi puno mali R2 ili auto žarulja jer ako je Mobius napravljen od tanje žice, moguće je da ista pregori usljed velike struje.
Napomena: na gornjoj slici je prikazano spajanje vanjskog izvora napajanja (akumulator), ali za visoke struje može se koristiti i normalan DC jack ulaz na uZapper, ako se koristi jači adapter za napajanje (npr. od 1A). U tom slučaju, ako se ne koristi vanjsko napajanje, onda je dovoljno spojiti Mobius L2 i R2 između Draina (F) i plus izvoda (+) na tropolnom šasijskom konektoru.
Slika naponskog impulsa na drainu FET-a 740 koji se dobije ako se kao izvor napajanja koristi auto akumulator 12V, te kao potrošač auto sijalica od 25W/12V u seriju s Mobius zavojnicom u orgonitu, što otprilike daje oko 2A maksimalne struje.
Gornja slika pokazuje 'razorni' strmi naponski impuls koji B16mini može generirati bez ikakvih negativnih posljedica, dapače ovaj impuls dovlači još više pozitivne orgonske energije preko Mobiusa i orgonita. Impuls je ograničen na 400V maksimalne vrijednosti jer je to maksimalna vrijednost koju FET IRF740 može 'progutati'. Interesantno je kako ovaj FET može izdržati i veće impulse, ali ih ugrađena zener dioda 'kida' tako da impulsi preko njega nikada ne mogu preći 400V, a i rad u ovom području je iznimno rizičan jer je pregaranje FET vrlo lako moguće. Ali s ovim kratkim, ali visokim naponskim impuslima, ovaj FET se pokazao kao vrlo izdržljiva i žilava zvijerka.
Nažalost zbog velikog Rd otpora od 0.46Ohma, već kod par ampera ovaj FET se pristojno grije, ali ništa što jedno obično TO-220 hladilo ne bi moglo podnijeti.
Korisničke upute: uZapper B16 mini
ATMEGA48 programiranje:
uZapper B16 mini assembler kod se može izvršavati i za ATMEGA8 i za ATMEGA48 mikrokontroler, samo je potrebno definirati dva parametra:
.equ MCU_MODEL = ATMEGA_48 //(ili ATMEGA8)
.equ MCU_CLOCK = 4000000 //(radni takt)
Novost u kodu je:
- frequency hopping: umjesto 16-te frekvencije, aktivira se mod u kojem CPU automatski mijenja ostale programirane frekvencije. Svaka frekvencija ima određeni interval trajanja koji može biti fiksan ili se gleda iz tablice table_timer_data. Vrijeme trajanja određene frekvencije je određeno timerom2 koji radi s prescalerom od 1024.
- duty cycle < 50%: s jumperima na ulazima PB4,3,2 se sada može mijenjati duty cycle na manje od 50%
Trenutni kod ima ukupno 14 frekvencija i dva frequency hopping moda:
- Ako je DIP switch na poziciji 14 onda se aktivira frequency hopping sljedećih frekvencija: 1550Hz, 20Hz, 727Hz ,4200Hz po 5 minuta svaka frekvencija pa opet tako u krug za ATMEGA8, za ATMEGA48 su frekvencije: 7.83Hz, 13.20Hz, 14.30Hz, 15Hz
- Ako je DIP switch na poziciji 15 onda se aktivira frequency hopping od ukupno 46 frekvencija za ATMEGA8 ili 37 za ATMEGA48 koje se mijenjaju po vremenskim sekvencama od 3,5,8,13,21,34 minute i tako ukrug.
Binary hex dumpovi za uZapper B16 koji se direktno mogu 'spržiti' na mikrokontroler s bilo kojim programatorom:
Fuse bits su isti kao i kod uZappera A7.
Električna i montažna shema:
Klikni za veću sliku
IN(+), IN(-) i Drain (F) su izlazi na tropolnom šasijskom konektoru, a omogućavaju spajanje vanjskog izvora napajanja (akumulator) ili spajanje Mobiusove zavojnice orgonitnog uređaja preko zaštitnog otpora (5/10W 39-68Ohm) direktno na Drain FET-a čime se omogućava puštanje pravokutnog signala kroz krug jake struje (kroz FET), čime se omogućavaju vrijednosti struje i do 10A kroz Mobius. Za točnu shemu spajanja Mobiusa na ovaj ulaz, pogledaj gornje slike ili korisničke upute za uZapper B16mini.
OUT(+) i OUT(-) su standardni izlazi s uZappera s outputa FET drivera, a predviđeni su za zapiranje ili pogon orgonitnih uređaja s malim strujama kao i kod običnih zappera. Izvodi su spojeni na kabel s krokodilkama. Korisno za pogon PW orgonita u mobilnim operacijama.
DUTY CYCLE se može mijenjati s jumperima na ulazima PB4,PB3,PB2 koji su programirani da budu ulazi s internim pull-up tranzistorom. Stoga kad je ulaz ostavljen otvoren onda je logička jedinica na ulazu. Inače se jumperom spaja na masu. Logika ulaza je sljedeća:
rSignalDutyCycle = broj od 0-7 (PB4,3,2)
rSignalDutyCycle=0 (50%), rSignalDutyCycle =1 (preprogrammed values), rSignalDutyCycle=2 =25%, rSignalDutyCycle=3=12.5%, rSignalDutyCycle=4=6.25%,....
Montažna shema (dimenzije pločice: 56mmx35mm) uZappera je napravljena u SprintLayout CAD aplikaciji koji vrijedi svake lipe i toplo je preporučam. Postoji i besplatni viewer kojim se shema može vidjeti i isprintati: Sprint Layout Viewer 6.0
Dijelovi:
ATMEGA48 20PU (ili ATMEGA8-16)
Cap. 15pF x2
Cap. 470nF
Cap. Electrolytic 4,7uF 50V
Crystal Osc. 8.000Mhz
DC JACK 5.5x2.1mm
Diode Schotky 1N5819 1A40V (može i 1N5822)
Diode Zener 12V 1W
DIP 28 socket
DIP 8 socket
FET Driver UCC27324
LED Green 3mm 15000mcd
LM317LZ
R 100
R 1K
R 2.2K x 2
R 22K
Switch Metal Car/Boat Mini Toggle Switch B102s
Photo vitroplast 5.6x3.5cm
FET IRF740
HeatSink TO-220
3PIN Terminal
9V battery connector
Switch DIP 4
Upute za izradu uZappera C1
Opis: verzija uZappera C1 se temelji na starom dobrom timeru 555 te stoga možda nezasluženo nosi naziv uZapper jer u ovom zapperu nema mikrokontrolera. Može generirati samo jednu frekvenciju i to ili 15Hz ili 7.83Hz. 555-ica je vrlo nestabilna na visokim frekvencijama, dok je u rasponu od 0-15Hz vrlo stabilna te je čak otporna na promjenu izvora napajanja, što mi je bilo vrlo bitno da može davati istu frekvenciju i na bateriji od 9V i na adapteru od 12V.
Međutim, zbog nesavršenosti samih komponenti nikako nisam mogao s fiksnim vrijednostima otpora i kondenzatora pogoditi baš točno frekvenciju kako sam želio, stoga sam išao na malo kompliciraniju varijantu i umjesto fiksnog R2 otpora, stavio potenciometar od 100K u seriju s 390K što mi omogućava da fino podesim frekvenciju onako kako ja želim.
Na izlazu sam stavio dva otpora: 220Ohma koji je namješten 'defaultno' i namijenjen je zapiranju, te 2.2KOhma koji je namijenen prvenstveno napajanju orgonitnih uređaja. 220Ohm služi čisto kao zaštita od kratkog spoja, a omogućava sasvim fini efekt 'drmanja' kod zapiranja, odnosno ne guši totalno krivulju rasta pravokutnog signala koja s većim otporom biva veća. Inače svi zapperi po dizajnu Hulda Clark pa i Don Croftovi na izlazu imaju otpor od 1KOhm koji dosta guši ovaj efekt 'drmanja'. 220Ohma sam uočio kod zappera Z4 s tendollarzapper.com što svjedoći da tamo prave kvalitetne zappere.
Da još malo pojasnim zašto stavljam jumper na izlazu kojim se bira između dva otpora: 220Ohm i 2.2KOhm. Naime kod zapiranja struja koju čovjek 'vuče' svojim tijelom iz zappera rijetko prelazi 1-2mA, stoga nikakav zaštitni otpor ne bi trebao biti na izlazu 555-ice jer ista može davati i do 200mA na izlazu. Međutim, 220Ohm se stavlja da korisnik ne bi slučajno dotakao palice (plus i minus) i izazvao kratki spoj koji bi bez problema spržio 555-icu. Iako moram priznati da sam ovo par puta probao i da se žilava 555-ica nije nikako dala spržiti, ali ipak mjera opreza nalaže ovaj otpor koji bi teoretski pri 9V trebao ograničiti struju na maksimalno 20mA što je šok koji 555-ica i baterija mogu izdržati. Za izračun srednje struje uzima se polovica maksimalne struje jer se radi o pravokutnom signalu: I=(9V/220Ohm)/2=20mA.
S druge strane kod pokretanja Mobiusove zavojnice u orgonitnim uređajima koja u biti predstavlja kratki spoj za 555-icu i s otporom od 220Ohm, ovo bi uredno radilo, ali uz potrošnju od 20mA, što bi vrlo brzo iscrpilo 9V bateriju. Stoga sam omogućio stavljanje 2.2KOhm, koji ovu potrošnju svodi na oko 2mA, što je sasvim prihvatljivo i za mobilne operacije kad se pokreću orgoniti s 9V baterijom. Ali ako se koristi adapter za napajanje onda je u principu bolje koristiti manji otpor (220Ohm), jer veći otpor guši pravokutni signal, što je po meni i najveća mana zappera koji se koriste za pokretanje orgonitnih uređaja, a koji bi morali imati što 'divljačkiji' signal, odnosno strmi rast od 0-1 i strmi pad od 1-0.
uZapper C1 u praznom hodu troši svega 5-6mA pri izvoru od 9V (oko 7-8mA kod zapiranja), što sam uspio zahvaljujući korištenju LED diode s visokim brojem kandela (potrebno je svega par stotina mikroampera da svijetli) te korištenjem velikog ulaznog otpora od R1=4.6KOhma spojenog između pinova 4 i 7 na 555-ici. Naime ovaj otpor direktno utjeće na potrošnju timera 555: što je veći potrošnja je manja. Međutim, ne smije se pretjerati s vrijednošću ovog otpora jer se može narušiti simetričnost signala koja ovisi o odnosu otpora R1 (pin 4-7) i R2 (pin 7-6). Za simetričnost signala potrebno je da R2 bude veći bar 50 do 100 puta od R1.
Formula za izračun odnosa signal, pauza. Da bi se dobio simetričan signal (50% duty cycle) R1 mora biti zanemariv u odnosu na R2.
Mark time (output high): Tm = 0.7 × (R1 + R2) × C1
Space time (output low): Ts = 0.7 × R2 × C1
uZapper C1: uz malo veću potrošnju struje uspješno generira jednu frekvenciju pravokutnog signala što ga čini sasvim prihvatljivim izborom s obzirom na omjer cijena/mogućnosti.
Korisničke upute: uZapper C1
Električna i montažna shema:
uZapper C1 elektro schema: odabirom C1, moguće je dobiti ili 7.83Hz ili 15Hz
Montažna shema (dimenzije pločice: 56mmx20mm) uZappera je napravljena u SprintLayout CAD aplikaciji koji vrijedi svake lipe i toplo je preporučam. Postoji i besplatni viewer kojim se shema može vidjeti i isprintati: Sprint Layout Viewer 6.0
uZapper C1 u izradi (klikni za veću sliku)
Dijelovi:
9V battery connector
NE555
Banana Speaker Plug Female (Red & Black)
Cap. 15nF
Cap. 100nF
DC JACK 5.5x2.1mm
Diode Schotky 1N5819 1A40V
DIP 8 socket
LED Green 3mm 15000mcd
Plastic Box Case DIY 99.5 x 59.5 x 25mm
R 4.6K
R 390K
R 2.2K
R 22K
R 220
Switch Mini SPDT Guitar Toggle Switch ON-ON
Trimmer 100K (precise multiturn)
Photo vitroplast 5.6x2cm
Upute za izradu uZappera C1 mini
Opis: verzija uZappera C1 mini je verzija uZappera C1 namijenjena prvenstveno pokretanju orgonitnih uređaja. Kao glavni generator pravokutnog signala koristi timer 555. Može davati samo jednu frekvenciju (7.83Hz ili 15Hz). Opremljen je šasijskim tropolnim konektorom i power FET-om IRF740 koji omogućava aktiviranje orgonitnih uređaja jakom strujom (do 10A), stoga isto zaslužuje epitet 'radiantni' jer je sposoban generirati jake naponske impulse (do 400V) kao i veći brat B16 mini. Isto tako ima izvedene izlaze direktno s 555-ice i omogućava zapiranje s normalnim strujama ili pokretanje aktivnih orgonitnih uređaja s malim strujama kao i obični zapperi.
Ovo je moj najjednostavniji i najjeftiniji zapper, a cilj konstrukcije ovog zappera je masovno opremanje velikog broja aktivnih orgonitnih uređaja s jednostavnim i jeftinim sklopom, koji međutim pruža dovoljno kvalitetan signal na jednoj frekvenciji da sasvim zadovoljava potrebe prosječnog 'orgonitaša'.
C1 mini opremljen FET-om za jake struje služi kao jeftina i sposobna pješadija za masovno 'naoružavanje' i aktiviranje orgonskih uređaja s ciljem produkcije što više pozitivnog orgona.
Korisničke upute: uZapper C1 mini
Električna i montažna shema:
uZapper C1 mini elektro schema: odabirom C1, moguće je dobiti ili 7.83Hz ili 15Hz.
IN(+), IN(-) i Drain (F) su izlazi na tropolnom šasijskom konektoru, a omogućavaju spajanje vanjskog izvora napajanja (akumulator) ili spajanje Mobiusove zavojnice orgonitnog uređaja preko zaštitnog otpora (5/10W 39-68Ohm) direktno na Drain FET-a čime se omogućava puštanje pravokutnog signala kroz krug jake struje (kroz FET), čime se omogućavaju vrijednosti struje i do 10A kroz Mobius. Za točnu shemu spajanja Mobiusa na ovaj ulaz, pogledati opis uZappera B16mini ili korisničke upute za uZapper C1mini.
OUT(+) i OUT(-) su standardni izlazi s uZappera s outputa 555-ice, a predviđeni su za zapiranje ili pogon orgonitnih uređaja s malim strujama kao i kod običnih zappera. Maksimalno 20mA ako se ide preko 220Ohm ili 2mA ako ide preko 2.2KOhma, što se bira jumperom. Izvodi su spojeni na kabel s krokodilkama. Korisno za pogon PW orgonita u mobilnim operacijama.
Montažna shema (dimenzije pločice: 51mmx21mm) uZappera je napravljena u SprintLayout CAD aplikaciji koji vrijedi svake lipe i toplo je preporučam. Postoji i besplatni viewer kojim se shema može vidjeti i isprintati: Sprint Layout Viewer 6.0
uZapper C1 mini pokretan akumulatorom, pogoni Broadcaster nazvan Nera. Detalji ovdje. Moram priznati da u kombinaciji s FET om i Mobiusom u krugu jake struje, uZapper C1 mini troši enormnu količinu energiju, jer standardni auto akumulator uspijeva isprazniti za jednu/dvije sedmice bez problema
Dijelovi:
9V battery connector
NE555
Cap. 15nF
Cap. 100nF
DC JACK 5.5x2.1mm
Diode Schotky 1N5819 1A40V
DIP 8 socket
LED Green 3mm 15000mcd
Plastic Box
R 4.6K
R 390K
R 2.2K
R 22K
R 220
Switch Metal Car/Boat Mini Toggle Switch B102s
Trimmer 100K (precise multiturn)
Photo vitroplast 51x21mm
FET IRF740
HeatSink TO-220
3PIN Terminal
Pozitivan offset
U skladu s novim preporukama Dr. Hulde Clark, pravokutni signal na izlazu zappera bi trebao imati pozitivan offset, tj. nikad ne bi smio prelaziti u negativnu vrijednost. Ovakav signal po njezinoj preporuci jamči bolji efekt zapiranja.
Pravokutni signal zappera s pozitivnim offsetom. Signal iz zappera umjesto do 0V, ide do minimalno 0.25V koji u biti predstavlja offset.
Skoro svi primjerci zappera (Ten Dollar zapper, Terminator i ostali) koje sam testirao nisu imali sposobnost generiranja ovog pozitivnog offseta. Uglavnom su se svi oslajnjali na izlazni krug 555-ice da generira signal za zapiranje. Dapače sama Hulda Clark u svom orginalnom dizajnu zappera ("Cure for all cancers" iz 1993.g.) nije predvidjela mogućnost generiranja pozitivnog offfseta, da bi 2004. u svojoj knjizi "The Prevention of all Cancers" poboljšala dizajn svog zappera uvođenjem u igru sklopa za pozitivan offset. Njena tvrdnja je da je ovaj pozitivan offset jako bitan u eliminaciji parazita, a da negativne vrijednosti napona u signalu zappera mogu čak imati i negativan efekt odnosno potaknuti parazite na rast.
Osobno sam smatrao da ovaj faktor nije toliko bitan, jer i tako je polaritet signala relativan u smislu da promjenom polariteta palica (premještanjem iz jedne u drugu ruku) ili okretanjem kutije zapera (npr. iz smjera sjever-jug u smjer jug-sjever ako je položen na zapešće ruke i koriste se botuni na kutiji za zapiranje) taj polaritet se i tako mijenja. Međutim, kad sam malo pomnije analizirao kako se ponaša signal iz mog najnovijeg zappera A31, shvatio sam da imam razlog za zabrinutost jer signal ima neželjeno jako istritravanje u negativnom području vrijednosti napona. Mjerio sam i signal na izlazu 555-ice i izmjerio sličan efekt.
Pravokutni signal zappera A31 u trenutku kad se 'spušta' s nazivnih 11.5V na 0V ima jako istritravanje, gdje najveći naponski 'spike' ide i do -4.5V. Slično istritriavanje je prisutno i kod 555-ice koja se standardno koristi u većini zappera.
Dao sam se u potragu za jednostavnim i efikasnim rješenjem za generiranje pozitivnog offseta. Najbolje i najkompliciranije rješenje je korištenje OP-Ampa (operacijskoj pojačala), ali to bi mi previše zakompliciralo konstrukciju zappera. S druge strane u izlaznom krugu svojih zappera koristim već skoro savršeni FET driver koji ima nevjerovatnu rise/fall brzinu signala što mislim da je isto dosta važno za bolji efekt zappera. Prvo što sam testirao je ponuđeno rješenje Hulde Clark koja je u biti koristila jednostavno naponsko djelilo na izlazu zappera.
Rješenje Hulde Clark za pozitivni offset je jednostavno, ali kasnije ćemo vidjeti da je vrlo nekvalitetno. S običnim naponskim djeliteljem, kad je izlaz na zapperu (u ovom slučaju obična 555-ica koja radi na 9V) na 0V, na otporu R2 bude 0.025 napona napajanja. U ovom slučaju to je 9V * 0.025V što daje pozitivan offset od nekih 0.225V.
Međutim, kako ja volim mjeriti signal i pod opterećenjem, tj. kad stvarno struja i prolazi kroz tijelo u trenutku zapiranja, dobio sam vrlo porazne rezultate, odnosno vrlo deformirani naponski signal zapiranja kad se koristi naponski djelilo na izlazu zappera. Stoga sam takvo rješenje odbacio.
Lijevo: pravokutni signal zappera s naponskim djelilom 1kOhm /40kOhm u praznom hodu pokazuje uredan pozitivan offset do nekih 300mV. Desno: naponski signal kad čovjek ima palice u rukama. Signal jednostvano 'bježi' od 0V s očekivanih 0.25-0.3V na razine od 2.5V-3.6V uz jaku deformaciju. Ovo ukazuje da je efektivni otpor navlaženih palica u trenutku zapiranja manji od 40kOhm, te da RLC komponente ljudskih ruku totalno deformiraju izlazni signal čineči zapiranje čak i relativno opasnim s obzirom na prisutnost velikog DC offseta koji može izazvati laganu elektrolizu.
Ovo je kompletna slika deformiranog signala prilikom opterećenja (zapiranja s palicama) na izlazu iz zappera kad se koristi nekvalitetno rješenje u obliku naponskog djelila kako bi se postigao pozitivan offfset. Dobivamo pozitivan offset u prosjeku do 2.6V što je preiviše. Signal je po mom mišljenju neupotrebljiv za zapiranje.
Nakon malo mozganja, jedino kvalitetno, a opet jednostavno rješenje mi se činilo da na izlazu zappera stavim PNP tranzistor koji će kad na izlazu bude na 0V, biti u stanju vodljivosti i davati će stabilni pozitivni offset od 0.5V u svim uvjetima i prilikom opterećenja i u praznom hodu (bez opterećenja). Nije mi bilo drago u igru opet uvoditi tranzistor, zbog inherentne sporosti kod prelaska iz stanja vodljivosti u stanje zapiranja i obratno, ali praksa je dokazala da je signal maksimalno očuvan, a istvoremeno sam eliminirao istiitravanje u negativnom području, te postigao stabilan pozitivan offset čak i kod opterećenja na izlazu (zapiranja). Jedina mala negativna nuspojava je malo usporenje fall-time karakterstike pravokutnog signala kad prelazi iz maksimalne vrijednosti napona na 0V, odnosno na 0.5V.
Konačno rješenje za jednostavan i kvalitetan pozitivan offset je upotreba PNP tranzistora. Ovo rješenje koristim od sada u svim svojim zaperima.
Kod izlaznog napona iz zappera (OUT) od 0V, PNP tranzistor 2N5401 je u stanju vodljivosti (ON). Ogroman otpor Re prema napajanju osigurava vrlo malu struju vodljivosti za tranzistor, ali opet dovoljnu da se nađe u stabilnom stanju vodljivosti. U ovom stanju izlaz na palicama zappera (ZAP +/-) je napon Uce, odnosno napon od oko 0.55V što predstavlja pozitivan offset. Dioda 1N4148 spriječava tok struje s napajanja nazad u zapper kad je izlaz na zapperu (OUT) = 0V. Kad je izlaz na zapperu logička 1, odnosno na oko 11.5v, PNP tranzistor je u stanju nevodljivosti (OFF) predstavlja beskonačan otpor i ne utječe na signal na izlazima ZAP+/-. Dobra stvar ovog rješenja je da pozitivan naponski spike, kad signal raste od 0V do 11.5V na izlazu, ostaje sačuvan i da je vrijeme uspona signala (rise-time) od 0V do 11.5V (odnosno kod spike-a do 16-17V) unutar 10ns kao što je bio i prije uptrebe PNP tranzistora.
Pozitivan offset od 520mV s PNP tranzistorom na izlazu. Malo veća vrijednost offseta, ali stabilna i kod opterećenja, iako ima tendenciju rasta ostaje u granicama prihvatljivih vrijednosti.
Lijevo: pravokutni signal zappera s PNP tranzistorom na izlazu: usporava se 'fall-time' padanje napona s napona napajanja na 0.5V, ali zato nema istritravanja u negativnom području. Desno: naponski signal kod rasta signala je očuvan, 'rise-time' je brz kao i prije, s relativno velikim naponskim spikeom (do 16.8V), koji je po mom mišljenju dobrodošao u signalu za zapiranje jer privlači radiantnu/orgonsku/životvorrnu energiju iz prostora.
Sklop za pozitivan offset u zapperu A31 se nalazi između izlaza iz FET drivera UCC27424 i Mobius coila koji prolazi kroz orgonitni blok zappera. Malo je nezgrapan, ali je dovoljno minijaturan da je uspješno stao u kutiju zappera. Od 10/2015 standardno ga ugrađujem u svoje zappere.
Frequency Calculator
FreqCalc je program koji izračunava potrebne podatke za tablicu frekvencija za modele zappera A7, A31 i B16 ovisno o sistemskom taktu te da ovisno da li se koristi ATMEGA8 ili 48 mikrokontroler:
FreqCalc_uZapper.zip - odzipati u neki direktorij i pokrenuti FreqCalc.exe
FreqCalc_1.3_source.zip - source kod za frekvencijski kalkulator za Visual Studio 2010+sp1 s QT 5.1.0 enginom