TREX-Airwolf with retract

Diskusi tentang heli elektrik

Moderators: Budiman, irsansaputra

User avatar
Budiman
First Lieutenant
First Lieutenant
Posts: 1271
Joined: 17 Jan 2007, 15:27
Location: bekasi-surabaya
Contact:

Post by Budiman »

widodo wrote:Wah kalau ESC yang jago Mas JedX tuh pak... Saya cuma tahu sedikit:

Anyway, Brushless ESC otaknya sudah micro-processor yang programnya sudah di simpan dalam chip nya, tapi biasanya programnya sudah di fused supaya tidak bisa di baca/ditulis lagi. Memang ada programmable ESC, tapi ini yang bisa di rubah2 adalah parameter yang disimpai di SRAM di processor tsb (spt memory stick).

Apa dari baru memang cuma 4 pilihan yang ada pak...?, Kalau dari awal mungkin versi softwarenya pak. Saya juga kena hal yang sama dgn towerpro 30A... Sepertinya produksi awal cuma stikernya aja yang baru...
Di lihat2 nggak mungkin ngerubahnya.. ya jadi dipakai aja..



Alo Pak Widodo,
Benar Pak..dr saya pertama beli cuma 4 pilihan menu ..pd awalnya saya jg mikir mungkin software dlm IC RAM pd ESC bisa di-ubah2..tp bener jg kata sampean...ESC ini sudah dilock sm pabriknya..dan juga ga ada serial port buat up load soft ware...hehehehe =P~
Wah setelah baca2 postingan sampean...saya jadi ingat ilmu digital dan microprocessor Z-80 wkt sekolah dulu neh... 8-[ ...
Gimana kalo bikin ESC swadaya aja,Pak?...ayo Mas JEDX..hehehhe..
kalo gini caranya lama2 pabrik heli bisa bangkrut ya... =P~

salam,

budi
User avatar
widodo
Airman First Class
Airman First Class
Posts: 81
Joined: 04 Aug 2007, 16:51
Location: Jakarta

Post by widodo »

Wah asyik nih pak budiman satu aliran juga.... =D> =D> , Pake Atmel 89X aja pak... kayak pake Z-80 tapi cuma satu IC aja... =P~ , program langsung di tulis ke processor lewat ISP port, di connect-in ke paralel port komputer...

@Mas JedX: VPN saya lagi susah nih jadi saya share di sini saja ya... @Pak Budiman: Kalau tertarik... langsung coba aja pak. Board Jadi yang murah meriah bisa di lihat di http://www.bataraelektrindo.com/elektrindo/products.php?pageNum_produk=2#

Anyway, ini program buat untuk buat CCPM dari TX/RX 4 channel. Program dibuat untuk Atmel 89S52 untuk feature Fail-save tapi bisa juga jalan di 89S51/8051 tapi tanpa feature fail-save karena tidak ada timer2.

Blok logic diagram diagram
Image

Signal Radio (Di Walkera 4Ch ada di pin 1), di buffer dgn 74LS14 Schmitt Trigger (Krn Inverting jd di double buffer) untuk menghilangkan noise dan maintain high impedance jadi RX tetap berfungsi normal.

Signal radio di hubungkan dgn port 3.2 untuk Gate Timer0 & interupt 0.

Incomming signal di ukur lebar pulsanya oleh Timer0 dan di simpan di lokasi memori 40-49, setelah signal synch terdeteksi. Untuk setiap cycle (1 Synch pulse) harga CCPM di hitung dan hasilnya di move ke output buffer di address 30-38. Output di drive oleh synch pulse tapi kalau unsync timer 2 akan detek dan mengeluarkan output yang ada di 30-38 (fail-save).

Programnya:

Silahkan dipergunakan untuk keperluan non komersil, semoga menjadi ilmu yang berguna

$INCLUDE (REG_C51.INC) ; 8051/8259 Register declaration
$MOD51 ; Port Naming

org 00h
ljmp begin ; Init

ORG 0003H ; Pointer ke Procedure untuk process incomming signal
LJMP INT0PROC

ORG 01BH
LJMP TIMER1 ; Pointer ke Timer1 yg mengatur lebar pulsa output

org 02Bh
ljmp timer2 ; Pointer ke Timer2 yg mengatur Processor Output Cycle dan Watch Dog kalau signal hilang
; tetap hasilin signal buat servo (Fail-save)

org 100
begin:
MOV R1,#40H ; Init value
mov r0,#40h ; Pointer ke Address 40H untuk menyimpan lebar pulsa dari signal
setiap pulsa lebarnya 16bit, krn penyimpanan hanya utk 8 Bit-> di simpan dalam dua lokasi

;TIMER2 SETTING 20 MS
MOV TH2,#0B1H
MOV TL2,#0DFH
MOV RCAP2H,#0B1H
MOV RCAP2L,#0DFH
CLR C_T2
CLR CP_RL2
SETB EA
SETB ET2
SETB TR2
;;END SETTING TIMER2

;SETTING TIMER0

SETB EA ;; ENABLE INTERUPT
SETB EX0 ;; EXTERNAL INTERUPT 0
SETB IT0 ;; FAILING EDGE TYPE INTERUPT

ANL TMOD,#0F0H
ORL TMOD,#09H
MOV TH0,#00H
MOV TL0,#00H
CLR ET0 ;INTERUPT
SETB TR0

;RISE INT0 PORT
SETB P3.2

;RUN TIMER


;TIMER1
ANL TMOD,#0FH
ORL TMOD,#10H
SETB ET1

;JALANIN TIMER1 NO OUTPUT
MOV R0,#40H
MOV TH1,#0FFH
MOV TL1,#0F0H
SETB TR1

;init CCPM indicator
MOV R4,#00H

JMP $ ; Initialized completed, tinggal tunggu interupt datang dari Signal Radio/Timer 1 (watch Dog)



INT0PROC: ; Setiap signal radio berubah dari 5V -> 0V, procedure ini akan dipanggil
; Karena Timer0 di gated dgn signal yang sama, saat signal 5V harga timer akan berkurang 1 setiap
; 1 micro second. Saat procedure ini di panggil, Harga Timer0 berisi Lebar Pulsa dalam micro second.
push psw
push acc

CLR TR0
;CPL P0.0
MOV R2,TH0
MOV R3,TL0
MOV TH0,#00H
MOV TL0,#00H
SETB TR0

;remove 3LSB ->0 (1111 1100) TO REMOVE JITTER
MOV A,#0FCH
ANL A,R3
MOV R3,A
;CHECK IF TH=19H ->MARK: Jika 8 bit tertinggi dari Timer0 lebih besar dari 19H artinya pulsa lebih lebar dari 6.4 mS
; Karena max lebar pulsa adl 2mS ini artinya signal ini adalah signal synchronisasi. Signal setelah ini adalah signal
; untuk channel 1.

MOV A,R2
CLR C
SUBB A,#19H ;#19H
JC NOMARK
;Setelah synch baru process
MOV R1,#40H
cpl P0.7
MOV R5,#01H
;INDEX TIMER1 DI SET CH 0
; Timer2 di set untuk jadi Fail-Save kalau signal hilang. 50mS dari sekarang timer 2 akan jalan biar
; Tidak ada signal yang datang dengan menggunakan last known signal
clr tr2
MOV TH2,#0B1H
MOV TL2,#0DFH
setb tr2

MOV R0,#30H
syncout:
;COPY DR 40 KE 30
; dari buffer siap di keluarkan ke output (30-39)
MOV 30H,43H
MOV 31H,42H
MOV 32H,45H
MOV 33H,44H
MOV 34H,47H
MOV 35H,46H
MOV 36H,49H
MOV 37H,48H
;CH 5 merupakan replikasi dr ch 3
MOV 38H,34H
MOV 39H,35H


CJNE R4,#00H,CCPMINIT
; Karena ini processor 8 Bit, untuk ngitung operasi 16Bit agak di akal2 dikit
;GET THORTLE INIT VALUE AND STORE AS 8 BIT IN 5AH
MOV A,31H
MOV B,30H
ACALL TO8BIT
;MAKE SURE HASILNYA NANTI POSITIF
SUBB A,#02H
MOV 5AH,A

;GET AELERON INIT VAL AND STORE AS 8 BIT IN 5BH
MOV A,33H
MOV B,32H
ACALL TO8BIT
MOV 5BH,A

CCPMINIT:
ACALL CCPMLOGIC


NOMARK:

; Harga Signal di copy ke 40H&41 utk signal Sync
; 42H-48 (Buffer) utk signal channel 1 - 4, pemilihan lokasi memory ada pada index @R1

MOV A,R2
CLR C
;ADDJUST MIN
ADDC A,#02H

MOV @R1,A
INC R1
MOV A,R3
MOV @R1,A
INC R1

CJNE R1,#54H,NOOVERFLOW
MOV R1,#40H
;REMOVE MARK FLAG
MOV R5,#00H

NOOVERFLOW:
pop acc
pop psw
RETI


TIMER1:
; Timer 1 di isi lebar pulsa yang akan di keluarkan di ambil dari 30H-38
; index Channel di @R0 output yg di gunakan port 0 dr bit 0 - 4
push psw
push acc

CLR TR1
;RESET OUTPUT
MOV P0,#00H


;DO NOT PRODUCE SIGNAL WHEN R4 STILL 0 (HAVENT REVIEVED ANY DATA)
CJNE R4,#00H,INITILIZED
JMP NO38
INITILIZED:

;42
CJNE R0,#30H,NO42
;OVERFLOW ? PREPARE FORK NEXT CYCLE
CJNE R5,#00H,NOFORK
ACALL PREPAREFORK
NOFORK:
CLR C
MOV A,0FFH
SUBB A,@R0
MOV TL1,A
MOV A,0FFH
INC R0
SUBB A,@R0
INC R0
MOV TH1,A
SETB P0.0
SETB TR1
JMP SETOUT

NO42:
;44
CJNE R0,#32H,NO44
CLR C
MOV A,0FFH
SUBB A,@R0
MOV TL1,A
MOV A,0FFH
INC R0
SUBB A,@R0
INC R0
MOV TH1,A
SETB P0.1
SETB TR1
JMP SETOUT

NO44:
;46
CJNE R0,#34H,NO46
CLR C
MOV A,0FFH
SUBB A,@R0
MOV TL1,A
MOV A,0FFH
INC R0
SUBB A,@R0
INC R0
MOV TH1,A
SETB P0.2
SETB TR1
JMP SETOUT

NO46:
;46
CJNE R0,#36H,NO36
CLR C
MOV A,0FFH
SUBB A,@R0
MOV TL1,A
MOV A,0FFH
INC R0
SUBB A,@R0
INC R0
MOV TH1,A
SETB P0.3
SETB TR1
JMP SETOUT


NO36:
CJNE R0,#38H,NO38
CLR C
MOV A,0FFH
SUBB A,@R0
MOV TL1,A
MOV A,0FFH
INC R0
SUBB A,@R0
INC R0
MOV TH1,A
SETB P0.4
MOV R0,#40H
SETB TR1
JMP SETOUT

NO38:
CJNE R0,#40H,SETOUT
CLR C
MOV TL1,#098H
MOV TH1,#0FFH
CPL P0.7
SETB TR1

SETOUT:
SETB TR1
pop acc
pop psw
RETI

timer2:
; Kalau signal hilang reset R0 supaya output tetap keluar (fail-save)
clr tf2
push psw
push acc
CJNE R5,#01H,DONTRESET
;CJNE R0,#40H,DONTRESET
MOV R0,#30H
DONTRESET:
pop acc
pop psw
RETI


TO8BIT:
;CASTING A (MSB) AND B(LSB) TO 8BIT->A
RL A
RL A
RL A
RL A
RL A
ANL A,#0E0H
PUSH ACC
MOV A,B
RR A
RR A
RR A
ANL A,#1FH
MOV B,A
POP ACC
ORL A,B
RET

TO16BIT:
;CAST A TO A,B

PUSH ACC
;LSB
RL A
RL A
RL A
ANL A,#0F8H
MOV B,A
;MSB
POP ACC
RR A
RR A
RR A
RR A
RR A
ANL A,#07H
MOV B,A

RET

CCPMADD:
; A->MSB
; B->LSB
; R4 ->CONSTANT
; TEMP MEMORY 5A - 5F
;STORE VALUE FIRST
MOV 5AH,A
MOV 5BH,B
;EXPAND R4
MOV A,R4
ACALL TO16BIT
;STORE VALUE
MOV 5CH,A
MOV 5EH,B

;ADD LSB FIRST
MOV A,5BH
MOV B,5EH
ADDC A,B
;SIMPAN
PUSH ACC
;ADD MSB
MOV A,5AH
MOV B,5EH
ADDC A,B
;MSB-A, TARUH LSB ->
POP B
RET


CCPMSUB:
; A->MSB
; B->LSB
; R4 ->CONSTANT
; TEMP MEMORY 5A - 5F
;STORE VALUE FIRST
MOV 5AH,A
MOV 5BH,B
;EXPAND R4
MOV A,R4
ACALL TO16BIT
;STORE VALUE
MOV 5CH,A
MOV 5EH,B

;SUB LSB FIRST
MOV A,5BH
MOV B,5EH
SUBB A,B
;SIMPAN
PUSH ACC
;ADD MSB
MOV A,5AH
MOV B,5EH
SUBB A,B
;MSB-A, TARUH LSB ->
POP B
RET

CCPMLOGIC:
;CCPM LOGIC
;REMEMBER 30H-RANGE LSB FIRST!!!-->gara2 lupa ini sempet crash nih he he...
;TRANSLATE THORTLE INTO 8 BIT
MOV A,31H
MOV B,30H
ACALL TO8BIT
;KURANGIN ->02C0 (58) DULU DLM BTK 8 BIT
CLR C
SUBB A,5AH
JNC NOTMINUS
MOV A,#00H
NOTMINUS:
; CLR C
; RLC A

;NEW PATCH KEEP MSB IN 5C
MOV B,#02H ;ccpm MULTIPLIER- Ini rep 8 bit dari 16 bit (shifter right), kalau Pitch movement
;kurang besarin aja harganya.. hasilnya akan di operasiin untuk ngerubah center point
;dr cyclic servo.
MUL AB

;RESULT LSB ->A, MSB DI 5C

MOV 5CH,B

MOV R4,A
CLR C

;; TTP MIXING
;; CH2&3 TAMBAH
;; MSB TAMBAH R4
MOV A,32H
MOV B,R4
ADDC A,B
MOV 32H,A


MOV A,33H
MOV B,#00H ;5CH
ADDC A,B
MOV 33H,A

CLR C
MOV A,34H
MOV B,R4
ADDC A,B
MOV 34H,A


MOV A,35H
MOV B,#00H ;5CH
ADDC A,B

MOV 35H,A


;CH5 DIKURANG

CLR C
MOV A,38H
MOV B,R4
SUBB A,B
MOV 38H,A

MOV A,39H
MOV B,#00H ;5CH
SUBB A,B
MOV 39H,A
RET

PREPAREFORK:
clr tr2
MOV TH2,#0B1H
MOV TL2,#0DFH
setb tr2
RET

END


Note: Program sudah digunakan di DF60 dan telah terbang dng baik. Tidak ada garansi dalam bentuk apapun bahwa ini akan bekerja di implementasi yang lain dan saya tidak bertanggung jawab atas segala akibat langsung/Tidak langsung dari penggunaan program ini
User avatar
jedx
Technical Sergeant
Technical Sergeant
Posts: 321
Joined: 17 Jan 2007, 16:34
Location: BPT ( Bekasi Pinggir Tol ) ... Asline Ponorogo
Contact:

Post by jedx »

ini baru open source...

Thanks Om Widodo...
sorry AVR nya belum saya kirim...
User avatar
Redblur
Captain
Captain
Posts: 1656
Joined: 01 Apr 2007, 19:48
Location: Cinere
Contact:

Post by Redblur »

wah pusing om Widodo

btw thx utk share...

Retract bisa beli di mana ya?
User avatar
widodo
Airman First Class
Airman First Class
Posts: 81
Joined: 04 Aug 2007, 16:51
Location: Jakarta

Post by widodo »

Di Sky hobbies kayaknya jual deh, tapi jangan ambil yang plastik soalnya keplek2.... ntar malah cape memperkuatnya
User avatar
andre77
Technical Sergeant
Technical Sergeant
Posts: 388
Joined: 17 Jan 2007, 14:38
Location: BANJARMASIN
Contact:

Post by andre77 »

Waduh saya gak ngerti sama sekali uraian bahasa program pak widodo di atas.hebat banget pak widodo ini.
User avatar
rizalchakep
Airman First Class
Airman First Class
Posts: 84
Joined: 18 Jul 2007, 18:56
Location: MALANG
Contact:

Post by rizalchakep »

pak wid, salam kenall....

wah mantep pak akhirnya low level languagenya keluar juga,hehehh.
jadi ingat masa masa kuliah dulu....... ](*,) ](*,)

itu kan harus punya simulator programnya juga pak???buat ngisi programnya
User avatar
widodo
Airman First Class
Airman First Class
Posts: 81
Joined: 04 Aug 2007, 16:51
Location: Jakarta

Post by widodo »

Makasih Mas Andre& Pak Rizal,

Simulator & program buat isi ke ICnya bisa di download dr www.atmel.com, atau kalau ambil board dari batara langsung dapat CDnya kok udah lengkap sama asm51 compilernya, ngopi ke ICnya cuma pake paralel port
User avatar
rizalchakep
Airman First Class
Airman First Class
Posts: 84
Joined: 18 Jul 2007, 18:56
Location: MALANG
Contact:

Post by rizalchakep »

siiipppp, got it pak wid....

tapi mau nanya lagi neh. pertanyaan pemula neh (heheheh) sebenernya trex dikasih mc itu ngefeknya kemana aja sih pak?? apa mungkin terbangnya lebih bagus ato apa gitu, mohon pencerahan :bow: :bow: .

ato mungkin pergerakan servo2 lebih presisi ato bagaimana pak??
User avatar
widodo
Airman First Class
Airman First Class
Posts: 81
Joined: 04 Aug 2007, 16:51
Location: Jakarta

Post by widodo »

Saya waktu itu pasangnya di DF60 saya pak... krn electronicnya sempet saya pakai di TRex, anyway jadi saya pake electronicnya 76C (4 channel) buat ngontrol DF60 (6ch eCCPM) O:)

Tapi kalau udah punya 6 Channel sih ya nggak perlu kali ya pak, paling bisa ke pakai kalau punya TX 4 Channel (dr airplane) dan pengen main Heli 6 channel aja...

Buat future use sih bisa macem2 pak, tinggal ngerubah programnya sedikit aja pak...
Post Reply