欧美极品高清xxxxhd,国产日产欧美最新,无码AV国产东京热AV无码,国产精品人与动性XXX,国产传媒亚洲综合一区二区,四库影院永久国产精品,毛片免费免费高清视频,福利所导航夜趣136

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 6431|回復(fù): 1
收起左側(cè)

光電編碼盤的直流伺服電機PID閉環(huán)調(diào)速系統(tǒng)proteus仿真

[復(fù)制鏈接]
ID:137190 發(fā)表于 2016-9-4 22:13 | 顯示全部樓層 |閱讀模式
這個設(shè)計的仿真原理圖:
0.png 0.png
0.png
基于單片機的光電編碼盤的直流伺服電機PID閉環(huán)調(diào)速系統(tǒng)proteus仿真的所有資料下載:
基于光電編碼盤的直流伺服電機PID閉環(huán)調(diào)速系統(tǒng).zip (122.5 KB, 下載次數(shù): 119)


  1. ;HC11 PWM Motor Control Example
  2. ;Demonstrates ADC and Timer Output Capture functions

  3. PORTA             equ      $1000
  4. PORTC             equ      $1003
  5. PORTB             equ      $1004
  6. DDRC              equ      $1007
  7. TOC1              equ      $1016
  8. TOC2              equ      $1018
  9. TCTL1             equ      $1020
  10. TCTL2             equ      $1021
  11. TMSK1             equ      $1022
  12. TFLG1             equ      $1023
  13. TMSK2             equ      $1024
  14. PACTL             equ      $1026
  15. ADCTL             equ      $1030
  16. ADR1              equ      $1031
  17. ADR2              equ      $1032

  18.                 org $F000

  19. start:          lds  #$FF

  20.                 ldaa #$FF                        ;Port C is output
  21.                 staa DDRC

  22.                 ldaa #$80                        ;Enable OC1 interrupts.
  23.                 staa TMSK1                        ;

  24.                 ldaa #$2                        ;Set the prescaler (divide by 16)
  25.                 staa TMSK2

  26.                 ldaa #$80                        ;Enable PA7 as output
  27.                 staa PACTL
  28.        
  29.                           
  30.                 ldaa #$10                        ;Start first ADC conversion - multi mode enable
  31.                 staa ADCTL
  32.                           
  33.                 ldd #$0100                        ;Load the capture register
  34.                 std TOC1
  35.                        
  36.                 cli                                ;Enable interupts

  37. loop                wai
  38.                 bra loop



  39. ;OC1 interrupt service
  40. oc1f                ldaa #$10                         ;Start another ADC conversion
  41.                 staa ADCTL

  42.                 ldaa ADR1                        ;Read the pot position from ADC channel 1
  43.                 staa PORTB                        ;Display it
  44.                                                                                                    
  45.                 suba #127                        ;0x7F is zero reference.
  46.                
  47.                 bne oc1f_ne                            ;Jump if values not same

  48. ;Set Both outputs low. Motor is stationary
  49.                 clrb                                   
  50.                 stab PORTA                        ;Both OC1 and OC2 outputs low
  51.                 stab TCTL1                        ;TOC2 mode is disabled
  52.                 bra done
  53.                
  54. ;Non-zero drive - decide if +ve or -ve:
  55.                
  56. oc1f_ne                bcs oc1f_cs

  57. ;Positive result - motor spins clockwise:

  58.                 ldab #$40                        ;Port A drives this value:
  59.                 stab PORTA
  60.                 clrb                                ;Release TOC2 latch - Port A acquires value, above.
  61.                 stab TCTL1
  62.                 ldab #$40                         ;TOC 2 output toggles on OC2 event; motor drive stops.
  63.                 stab TCTL1
  64.                 bra done               

  65. ;Negative result - motor spins anti-clockwise:

  66. oc1f_cs                ldab #$80                        ;Port A drives this value:
  67.                 stab PORTA
  68.                 clrb                            ;Release TOC2 latch - Port A acquires value, above.
  69.                 stab TCTL1
  70.                 ldab #$40                         ;TOC 2 output toggles on OC2 event; motor drive stops.
  71.                 stab TCTL1
  72.                 nega                                ;Invert result -> 0xFF -> 0x01 etc.

  73. ;Now set up TOC2 to trigger at a time forward of TOC1. This means that the motor will
  74. ;be powered for the number of ticks in ACCA * 256.                                                                                
  75.                                                                                                                                                                                                                
  76. done:                tab                             ;TOC 2 is set to trigger after this no of cycles.
  77.                 clra
  78.                 rolb
  79.                 rola
  80.                 rolb
  81.                 rola               
  82.                 rolb
  83.                 rola
  84.                 rolb
  85.                 rola               
  86.                 rolb
  87.                 rola               
  88.                 addd TOC1  
  89.                 std TOC2
  90.                
  91.                 ldd #$1000
  92.                 addd TOC1
  93.                 std TOC1
  94.                
  95.                 ldaa #$80                        ;Clear the TOC 1 interrupt
  96.                 staa TFLG1
  97.                 rti


  98. ;Interrupt Vectors

  99.                 org $FFE8
  100.                 dw oc1f               

  101.                 org $FFFE
  102.                 dw start
復(fù)制代碼



回復(fù)

使用道具 舉報

ID:194876 發(fā)表于 2017-5-16 22:00 | 顯示全部樓層
看看感覺還行
回復(fù)

使用道具 舉報

無效樓層,該帖已經(jīng)被刪除
您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規(guī)則

小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機教程網(wǎng)

快速回復(fù) 返回頂部 返回列表