2011/11/13

12F675 A/D変換

12F629のお兄さん12F675はA/D変換が出来ます。

電圧の変化の範囲が多き場合、ADCON0,;ADFM=0:左詰め、
ADRESHのレジスタを利用します、電圧の変化の範囲が小さい
場合、ADCON0,;ADFM=1:右詰め、ADRESLのレジスタを利用します。


そのために練習
プログラム


;PIC12F675 A/D変換,EEPROM書き込み
;VER 1.0

LIST P=12F675
INCLUDE P12F675.INC
CB = _CPD_OFF ;データ保護しない
CB &= _CP_OFF ;コード保護しない
CB &= _BODEN_ON ;ブラウンアウトリセット
CB &= _MCLRE_OFF ;GP3/MCLR デジタルI/O
CB &= _PWRTE_ON ;パワーアップタイマを使用する
CB &= _WDT_OFF ;ウォッチドッグタイマをOFF
CB &= _INTRC_OSC_NOCLKOUT ;内部クロックを利用、RA4ピンI/Oピン
__CONFIG CB ;設定

;--
CBLOCK H'20'
CONT1 ;LED点滅カウント
SCONT1 ;タイマカウント
ADH ;ADCのADRESHのデータ
ADL ;ADCのADRESLのデータ
EEA ;EEPROM書き込み時のアドレス
EED ;EEPROM書き込み時のデータ
ENDC

;--
ORG H'0'
GOTO INIT
;ORG H'04'
;GOTO H04

;--
INIT ;デバイス初期化
BCF STATUS,RP0 ;0バンク選択
BSF CMCON,CM0 ;コンパレータOFF
BSF CMCON,CM1 ;コンパレータOFF
BSF CMCON,CM2 ;コンパレータOFF
BCF INTCON,PEIE ;周辺割り込みOFF

BSF STATUS,RP0 ;1バンク選択
;CALL 0x3FF ;
;MOVWF OSCCAL
MOVLW B'00000100' ;RP2入力用設定
MOVWF TRISIO ;RP2入力用設定
BSF ANSEL,ADCS0 ;ADCA/D変換のクロック選択Fosc/8
BCF ANSEL,ADCS1 ;ADCA/D変換のクロック選択Fosc/8
BCF ANSEL,ADCS2 ;ADCA/D変換のクロック選択Fosc/8
BSF ANSEL,ANS2 ;アナログ入力設定
BCF STATUS,RP0 ;0バンク戻る

;-----------------------------------------------------------
MAIN ;その1、ADC変換したしてデータをEEPROに書き込み


CALL ADCMAIN
MOVLW H'0' ;書き込みアドレス
MOVWF EEA ;書き込みアドレス
MOVF ADH,W ;書き込みデータ
MOVWF EED ;書き込みデータ
CALL EEPROM ;CALL EEPROM書き込み

MOVLW H'1'
MOVWF EEA
MOVF ADL,W
MOVWF EED
CALL EEPROM

;その2、ADC変換したデータを利用してLED点滅
BCF GPIO,GPIO4
MOVF ADH,W ;AEDデータを読み
MOVWF CONT1 ;カウント値

LEDOFF
NOP
CALL S1TIME
CALL S1TIME
CALL S1TIME
DECFSZ CONT1,F
GOTO LEDOFF

BSF GPIO,GPIO4
MOVF ADH,W
MOVWF CONT1

LEDON
NOP
CALL S1TIME
CALL S1TIME
CALL S1TIME
DECFSZ CONT1,F
GOTO LEDON

GOTO MAIN

;------------------------------------------------------------

;---
ADCMAIN
BCF ADCON0,ADFM ;ADFM=0:左詰め
BCF ADCON0,VCFG ;基準電圧VDD電源電圧
BSF ADCON0,CHS1 ;ADC対象ANポート,AN2
BCF ADCON0,CHS0 ;ADC対象ANポート,AN2
BSF ADCON0,ADON ;ADC変換ON
CALL ADCLK32 ;充電時間約30μs
BSF ADCON0,GO ;ADC変換

ENDAC
BTFSC ADCON0,GO ;ADC変換完了待ち
GOTO ENDAC ;ADC変換完了待ち
BCF ADCON0,ADON ;ADC変換OFF

MOVF ADRESH,W ;ADC変換後、ADRESHをWレジスタに
MOVWF ADH ;ADC変換後、ADHファイルレジスタに保存
MOVF ADH,F
BTFSC STATUS,Z ;変換したデータが0の場合、ADCMAINへ
GOTO ADCMAIN ;変換したデータが0の場合、ADCMAINへ

BSF STATUS,RP0 ;1バンク選択
MOVF ADRESL,W ;ADC変換後、ADRESLをWレジスタに
BCF STATUS,RP0 ;0バング戻る
MOVWF ADL ;ADC変換後、ADLファイルレジスタに保存
MOVF ADL,F
BTFSC STATUS,Z ;変換したデータが0の場合、ADCMAINへ
GOTO ADCMAIN ;変換したデータが0の場合、ADCMAINへ

RETURN

ADCLK32
MOVLW D'7' ;1 7x4+4=32μs
MOVWF SCONT1 ;
ADCLK32LOOP
NOP ;1
DECFSZ SCONT1,F ;1
GOTO ADCLK32LOOP ;2
RETURN ;2

;---
S1TIME     ;1000μS、1mS
  MOVLW   D'249'   ;1 249X4+4=1000
  MOVWF   SCONT1 ;1
S1LOP
  NOP     ;1
  DECFSZ  SCONT1,F ;1
  GOTO   S1LOP ;2
  RETURN     ;2



;---
EEPROM
BSF STATUS,RP0
MOVF EEA,W ;書き込みアドレス
  MOVWF EEADR
MOVF EED,W ;書き込みデータ
  MOVWF EEDATA
BSF EECON1,WREN ;書き込み許可
MOVLW 0X55 ;書き込み手順
MOVWF EECON2
MOVLW 0XAA
MOVWF EECON2
BSF EECON1,WR ;書き込み
RWC
  BTFSC EECON1,WR
GOTO RWC
BCF STATUS,RP0 ;書き込み完了後、バイク0に戻る

RETURN ;戻る
;---

EEND


END






2011/11/05

ソリッド・ステート・リレー(SSR)キット 25A(20A)タイプ

秋月電子で「ソリッド・ステート・リレー(SSR)キット 25A(20A)タイプ」を購入
http://akizukidenshi.com/catalog/g/gK-00203/

トライアックってなに
http://documentation.renesas.com/jpn/products/transistor/rjj27g0022_thyristors.pdf

フォトトライアックってなに
http://www.piclist.com/images/www/hobby_elec/pic6_c3.htm



2020/07/14

100均のタイマーライトとSSRリレーのコラボレーション



end

2011/10/30

Nikon D40 リモコン インターバルタイマー ハンタ付け

片面ガラス・ユニバーサル基板(ブレッドボード配線パターンタイプ)を
利用してハンタ付けします。




2011/10/22

Nikon D40 リモコン インターバルタイマー 回路図

Nikon D40 リモコン インターバルタイマー 回路図


説明
PIC12F629を利用して、一定期間を設定して、NikonD40のシャッター
信号を送ります。設定できる期間はプログラムによって変わりますが、
前回紹介したプログラムを少し変更して、1分間から8分間から設定
しています。 また、プログラムによって秒単位で設定できます。


タイマーの設定はDIPスイッチで設定します。
タイマー  DIP1(1) DIP2(2) DIP3(4)
1分間   OFF    OFF    OFF
2分間   ON     OFF    OFF
3分間   OFF    ON     OFF
4分間   ON     ON     OFF
5分間   OFF    OFF    ON
6分間   ON     OFF    ON
7分間   OFF    ON     ON
8分間   ON     ON     ON
*誤差があります。こちらで確認する限り、約2分ことに1秒遅れます。


ボタンスイッチを押すと割り込みでシャッターが押されます。
テストや手動でシャッターをしたい時に利用します。






2011/10/21

Nikon D40 リモコン インターバルタイマー 実験

Nikon D40 リモコン インターバルタイマー 実験

1分間間隔で写真を撮影しています。
利用するカメラはNikonD40、秒針が逆回転している原因はタイマーは約2分ことに1秒遅れています。

下記の動画は撮った写真は117枚、1秒間隔で再生しています。