Перейти к содержимому

【電子工学Ⅱ/マイコン制御】016-1:DCモーターの駆動(PIC16F84AでPWM制御|SW切替でDCモーター速度を変える)

YouTube大学ENG【基礎電気電子工学】

0:00 / 0:00

【電子工学Ⅱ/マイコン制御】016-1:DCモーターの駆動(PIC16F84AでPWM制御|SW切替でDCモーター速度を変える)

59 просмотров · 9 дн. назад
YouTube大学ENG【基礎電気電子工学】
470 подписчиков
59 просмотров · 9 дн. назад
【概要】 PIC16F84Aを使って、PWM制御でDCモーターの回転速度を切り 替える方法を紹介します。この動画では、複数のSW入力によって デューティ比を変更し、モーターの回転速度がどのように変わる かを解説しています。PWM制御の基本的な考え方や、デューティ 比の意味も図を使ってわかりやすく説明しています。最後に実機 での動作確認も行い、プログラムがどのように動くかを具体的に 見ていきます。 【この動画で分かること】 ・PWM制御の基本的な仕組み ・デューティ比と回転速度の関係 ・PIC16F84AでのSW入力の使い方 ・DCモーター速度制御プログラムの考え方 ・実機での動作確認の流れ 【対象】 ・PICマイコンを学び始めた方 ・PWM制御の基礎を知りたい方 ・DCモーター制御を試したい方 ・アセンブラでの入出力制御を学びたい方 【動画の内容】 ・PIC16F84Aを使った回路と構成 ・PWM制御とは何か ・デューティ比の考え方 ・SW切替で速度を変える方法 ・プログラムの動作説明 ・実機による回転速度の確認 【シリーズ】 ・DCモーターの駆動(PICでDCモーターを駆動する方法 |  FETと還流ダイオードの選び方)     • 【電子工学Ⅱ/マイコン制御】016:DCモーターの駆動(PICでDCモーターを駆動す...   ・動画リスト:<電子工学Ⅱ/マイコン制御>    • 【電子工学ⅡENG】[マイコン制御]   #PIC16F84A #PWM #DCモーター制御 #PICアセンブラ #電子回路 #マイコン制御 #回転速度制御 #スイッチ入力 #実機検証 #初心者向け ========================================= プログラムリスト MPLABX Ver5.35 [DCモーターの回転速度をSWで切り替える] コピー&ペーストで使用して下さい。 ========================================= ;------------------初期設定------------------- LIST p=p16F84A #INCLUDE "p16f84a.inc" __CONFIG _HS_OSC & _WDT_OFF & _PWRTE_ON & _CP_OFF ;----------------ユーザー設定---------------- CNT1 EQU 0Ch ;タイマサブルーチン用レジスタ番地指定 CNT2 EQU 0Dh CNT3 EQU 0Eh CNT4 EQU 0Fh ;--------------ポート入出力設定--------------- ORG 00h BSF STATUS,RP0 ;バンク1に切り換え MOVLW B'00011100' ;RA2_RA4を入力に設定 → Wレジスタ MOVWF TRISA ;Wレジスタ → Aポート 入出力設定 CLRF TRISB ;PORTB全RB=出力モード BCF STATUS,RP0 ;バンク0に切り換え ;(以降、PORTA,Bレジスタ扱う為) CLRF PORTB ;PORTBをリセット ;-------------------------------------------- ;-----------------SW入力待ち------------------ MAIN BTFSS PORTA, 2 ;RA2が1なら次の行をスキップ CALL LOW2 ;LOW2へ CALL MT_OFF ;MT_OFFへ BTFSS PORTA, 3 ;RA3が1なら次の行をスキップ CALL MIDDLE3 ;MIDDLE3へ CALL MT_OFF ;MT_OFFへ BTFSS PORTA, 4 ; RA4が1なら次の行をスキップ CALL HIGHT4 ;HIGHT4へ CALL MT_OFF ;MT_OFFへ GOTO MAIN ;ループ ;-----------------低速回転(SW2)------------------ LOW2 ;デューティ比=20% CALL MT_ON CALL TIMER4 ;2[ms]タイマ CALL MT_OFF CALL TIMER2 ;8[ms]タイマ RETURN ;----------------中速回転(SW3)------------------ MIDDLE3 ;デューティ比=40% CALL MT_ON CALL TIMER4 ;4[ms]タイマ=2[ms]タイマ×2 CALL TIMER4 ; CALL MT_OFF CALL TIMER3 ;6[ms]タイマ RETURN ;----------------高速回転(SW4)------------------ HIGHT4 ;デューティ比=80% CALL MT_ON CALL TIMER2 ;8[ms]タイマ CALL MT_OFF CALL TIMER4 ;2[ms]タイマ RETURN ;----------------モーター回転処理---------------- MT_ON MOVLW B'10000000' ; リテラル → Wレジスタ MOVWF PORTB ; Wレジスタ → PORTBに出力(モーター回転) RETURN ;----------------モーター停止処理---------------- MT_OFF MOVLW B'00000000' ; リテラル → Wレジスタ MOVWF PORTB ; Wレジスタ → PORTBに出力(モーター停止) RETURN ;-------------2[ms]生成サブルーチン-------------- TIMER4 MOVLW D'20' MOVWF CNT4 LOOP4 NOP CALL TIMER1 DECFSZ CNT4,F ;デクリメントした値をレジスタCNT4に戻す GOTO LOOP4 RETURN ;-------------6[ms]生成サブルーチン-------------- TIMER3 MOVLW D'60' MOVWF CNT3 LOOP3 NOP CALL TIMER1 DECFSZ CNT3,F ;デクリメントした値をレジスタCNT3に戻す GOTO LOOP3 RETURN ;-------------8[ms]生成サブルーチン-------------- TIMER2 MOVLW D'80' MOVWF CNT2 LOOP2 NOP CALL TIMER1 DECFSZ CNT2,F ;デクリメントした値をレジスタCNT2に戻す GOTO LOOP2 RETURN ;-------------0.1[ms]生成サブルーチン-------------- TIMER1 MOVLW D'62' MOVWF CNT1 LOOP1 NOP DECFSZ CNT1,F ;デクリメントした値をレジスタCNT1に戻す GOTO LOOP1 RETURN ;---------------------------------------------- END ;プログラムの記述終了