方形波ジェネレータの作成
(2017.5.8作成)
トランジスタアンプを作ってみたものの、周波数特性が真空管式よりは伸びているでしょうがPC測定器では測れませんので、方形波で簡易に様子見しようかと思い方形波ジェネレータを作ってみました。
方形波ジェネレータ、色々方法がありそうですが一寸の様子見が目的なので精確なことより簡単な仕掛けで100/1K/10KHzが出せるのが第一。タイマーIC(555)も考えましたが、マイコンの方が簡単かと。ルネサス3664ではちと大袈裟なのでPIC(12F509)で作ってみました。久々に使いましたがPICのアセンブラ(ハード命令)、一般的なマイコンとは異なっているので少々疲れました。
色々あって、後日改修しました。
100Hz、出力自体がサグになっていて、...、結局マンガン乾電池を使用していたのが原因と判明。
その他、エミッターフォロアよりエミッタ接地1段の立ち下/上がりが若干いいかな、となりました。
≪回路≫
≪基板図≫
≪プログラムリスト≫
MPASM 5.34 SAMPLE.ASM 6-20-2017 10:36:27 PAGE 1
LOC OBJECT CODE LINE SOURCE TEXT
VALUE
00001 LIST P=12F509,ST=OFF
00002
00003 INCLUDE P12F509.INC
00001 LIST
00002 ; P12F509.INC Standard Header File, Version 1.00 Microchip Technology, Inc.
00115 LIST
00004 ERRORLEVEL 1
00005
0FFF 0FEA 00006 __CONFIG _MCLRE_OFF & _CP_OFF &_WDT_OFF & _IntRC_OSC
0400 000F 000F 000F 00007 __IDLOCS H'FFFF'
000F
00008 ;
00000007 00009 LCTU EQU 0x07
00000008 00010 LCTL EQU 0x08
00000009 00011 LCT0U EQU 0x09
0000000A 00012 LCT0L EQU 0x0A
0000000B 00013 LCTK EQU 0x0B
0000000C 00014 PCCTU EQU 0x0C
0000000D 00015 PCCTL EQU 0x0D
00016 ;
00000001 00017 LC100U EQU d'1' ;loop ct(up) for 100Hz out
0000003B 00018 LC100L EQU d'59' ;loop ct(lw) for 100Hz out
00000000 00019 LC1KU EQU d'0' ;loop ct(up) for 1KHz out
0000001F 00020 LC1KL EQU d'31' ;loop ct(lw) for 1KHz out
00000000 00021 LC10KU EQU d'0' ;loop ct(up) for 10KHz out
00000003 00022 LC10KL EQU d'3' ;loop ct(lw) for 10KHz out
00000050 00023 PCCTK EQU d'80' ;skip key chattering
00024 ;
00000000 00025 CLKUP EQU 0 ;decrement osc ct
00000001 00026 CLKDW EQU 1 ;increment osc ct
00000003 00027 CLKCHG EQU 3 ;change ocs 1K, 10K, 100, 1K, ...
00028 ;
00000020 00029 BOSC EQU 0x20
00030 ;
0000 00031 ORG 0x0000
0000 0A05 00032 goto START
00033 ;
0005 00034 ORG 0x0005
0005 0CBF 00035 START movlw 0xBF
0006 0002 00036 option
0007 006C 00037 clrf PCCTU
0008 006D 00038 clrf PCCTL
0009 0C01 00039 movlw 1
000A 002B 00040 movwf LCTK
000B 0C00 00041 movlw LC1KU
000C 0027 00042 movwf LCTU
000D 0029 00043 movwf LCT0U
000E 0C1F 00044 movlw LC1KL
000F 0028 00045 movwf LCTL
0010 002A 00046 movwf LCT0L
0011 0CDF 00047 movlw 0xDF
0012 0006 00048 tris 6 ;ot GPIO5 only
00049 ;
MPASM 5.34 SAMPLE.ASM 6-20-2017 10:36:27 PAGE 2
LOC OBJECT CODE LINE SOURCE TEXT
VALUE
00050 ;
0013 02E8 00051 loop10 decfsz LCTL,F
0014 0A20 00052 goto loop50
0015 0227 00053 movf LCTU,F
0016 0643 00054 BTFSC STATUS,Z
0017 0A1A 00055 goto loop12
0018 00E7 00056 decf LCTU,F
0019 0A20 00057 goto loop50
00058 ;
001A 0209 00059 loop12 movf LCT0U,W
001B 0027 00060 movwf LCTU
001C 020A 00061 movf LCT0L,W
001D 0028 00062 movwf LCTL
001E 0C20 00063 movlw BOSC
001F 01A6 00064 xorwf GPIO,F
00065 ;
0020 022C 00066 loop50 movf PCCTU,F
0021 0643 00067 btfsc STATUS,Z
0022 0A27 00068 goto loop52
0023 00ED 00069 decf PCCTL,F
0024 0643 00070 btfsc STATUS,Z
0025 00EC 00071 decf PCCTU,F
0026 0A54 00072 goto loop99
00073 ;
0027 0706 00074 loop52 btfss GPIO,CLKUP
0028 0A4A 00075 goto loop60
0029 0726 00076 btfss GPIO,CLKDW
002A 0A4F 00077 goto loop70
002B 0666 00078 btfsc GPIO,CLKCHG
002C 0A54 00079 goto loop99
00080 ;
002D 022B 00081 movf LCTK,F
002E 0743 00082 btfss STATUS,Z
002F 0A39 00083 goto loop53
0030 0C02 00084 movlw 2
0031 002B 00085 movwf LCTK
0032 0C01 00086 movlw LC100U
0033 0027 00087 movwf LCTU
0034 0029 00088 movwf LCT0U
0035 0C3B 00089 movlw LC100L
0036 0028 00090 movwf LCTL
0037 002A 00091 movwf LCT0L
0038 0A52 00092 goto loop90
00093 ;
0039 00EB 00094 loop53 decf LCTK,F
003A 0743 00095 btfss STATUS,Z
003B 0A43 00096 goto loop54
003C 0C00 00097 movlw LC10KU
003D 0027 00098 movwf LCTU
003E 0029 00099 movwf LCT0U
003F 0C03 00100 movlw LC10KL
0040 0028 00101 movwf LCTL
0041 002A 00102 movwf LCT0L
MPASM 5.34 SAMPLE.ASM 6-20-2017 10:36:27 PAGE 3
LOC OBJECT CODE LINE SOURCE TEXT
VALUE
0042 0A52 00103 goto loop90
00104 ;
0043 0C00 00105 loop54 movlw LC1KU
0044 0027 00106 movwf LCTU
0045 0029 00107 movwf LCT0U
0046 0C1F 00108 movlw LC1KL
0047 0028 00109 movwf LCTL
0048 002A 00110 movwf LCT0L
0049 0A52 00111 goto loop90
00112 ;
004A 022A 00113 loop60 movf LCT0L,F
004B 0643 00114 btfsc STATUS,Z
004C 00E9 00115 decf LCT0U,F
004D 00EA 00116 decf LCT0L,F
004E 0A52 00117 goto loop90
00118 ;
004F 02AA 00119 loop70 incf LCT0L,F
0050 0643 00120 btfsc STATUS,Z
0051 02A9 00121 incf LCT0U,F
00122 ;
0052 0C50 00123 loop90 movlw PCCTK
0053 002C 00124 movwf PCCTU
00125 ;
0054 0A13 00126 loop99 goto loop10
00127 ;
00128 END
MEMORY USAGE MAP ('X' = Used, '-' = Unused)
0000 : X----XXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX
0040 : XXXXXXXXXXXXXXXX XXXXX----------- ---------------- ----------------
0400 : XXXX------------ ---------------- ---------------- ----------------
0FC0 : ---------------- ---------------- ---------------- ---------------X
All other memory blocks unused.
Program Memory Words Used: 81
Program Memory Words Free: 943
Errors : 0
Warnings : 0 reported, 0 suppressed
Messages : 0 reported, 0 suppressed
カウンターとプログラムループで出力ポートの1/0を切り替えるだけです。入力ポートで100/1KHz/10KHzの切替とカウンターの増減(周波数の微調整)を行います。
これで先日作ったトランジスタアンプを動かしましたが、100Hzで若干のサグが見えた他は、入力との差は何も(オーバーシュートなど)現れませんでした。エミッターフォロア出力なので、10KHzでの立ち下がりが元波形から若干甘くなってはいますが。
次からは、PCで測れない高域の周波数特性が幾らかは覗えそうです。
トランジスタアンプを作ってみたものの、周波数特性が真空管式よりは伸びているでしょうがPC測定器では測れませんので、方形波で簡易に様子見しようかと思い方形波ジェネレータを作ってみました。
方形波ジェネレータ、色々方法がありそうですが一寸の様子見が目的なので精確なことより簡単な仕掛けで100/1K/10KHzが出せるのが第一。タイマーIC(555)も考えましたが、マイコンの方が簡単かと。ルネサス3664ではちと大袈裟なのでPIC(12F509)で作ってみました。久々に使いましたがPICのアセンブラ(ハード命令)、一般的なマイコンとは異なっているので少々疲れました。
色々あって、後日改修しました。
100Hz、出力自体がサグになっていて、...、結局マンガン乾電池を使用していたのが原因と判明。
その他、エミッターフォロアよりエミッタ接地1段の立ち下/上がりが若干いいかな、となりました。
≪回路≫
≪基板図≫
≪プログラムリスト≫
MPASM 5.34 SAMPLE.ASM 6-20-2017 10:36:27 PAGE 1
LOC OBJECT CODE LINE SOURCE TEXT
VALUE
00001 LIST P=12F509,ST=OFF
00002
00003 INCLUDE P12F509.INC
00001 LIST
00002 ; P12F509.INC Standard Header File, Version 1.00 Microchip Technology, Inc.
00115 LIST
00004 ERRORLEVEL 1
00005
0FFF 0FEA 00006 __CONFIG _MCLRE_OFF & _CP_OFF &_WDT_OFF & _IntRC_OSC
0400 000F 000F 000F 00007 __IDLOCS H'FFFF'
000F
00008 ;
00000007 00009 LCTU EQU 0x07
00000008 00010 LCTL EQU 0x08
00000009 00011 LCT0U EQU 0x09
0000000A 00012 LCT0L EQU 0x0A
0000000B 00013 LCTK EQU 0x0B
0000000C 00014 PCCTU EQU 0x0C
0000000D 00015 PCCTL EQU 0x0D
00016 ;
00000001 00017 LC100U EQU d'1' ;loop ct(up) for 100Hz out
0000003B 00018 LC100L EQU d'59' ;loop ct(lw) for 100Hz out
00000000 00019 LC1KU EQU d'0' ;loop ct(up) for 1KHz out
0000001F 00020 LC1KL EQU d'31' ;loop ct(lw) for 1KHz out
00000000 00021 LC10KU EQU d'0' ;loop ct(up) for 10KHz out
00000003 00022 LC10KL EQU d'3' ;loop ct(lw) for 10KHz out
00000050 00023 PCCTK EQU d'80' ;skip key chattering
00024 ;
00000000 00025 CLKUP EQU 0 ;decrement osc ct
00000001 00026 CLKDW EQU 1 ;increment osc ct
00000003 00027 CLKCHG EQU 3 ;change ocs 1K, 10K, 100, 1K, ...
00028 ;
00000020 00029 BOSC EQU 0x20
00030 ;
0000 00031 ORG 0x0000
0000 0A05 00032 goto START
00033 ;
0005 00034 ORG 0x0005
0005 0CBF 00035 START movlw 0xBF
0006 0002 00036 option
0007 006C 00037 clrf PCCTU
0008 006D 00038 clrf PCCTL
0009 0C01 00039 movlw 1
000A 002B 00040 movwf LCTK
000B 0C00 00041 movlw LC1KU
000C 0027 00042 movwf LCTU
000D 0029 00043 movwf LCT0U
000E 0C1F 00044 movlw LC1KL
000F 0028 00045 movwf LCTL
0010 002A 00046 movwf LCT0L
0011 0CDF 00047 movlw 0xDF
0012 0006 00048 tris 6 ;ot GPIO5 only
00049 ;
MPASM 5.34 SAMPLE.ASM 6-20-2017 10:36:27 PAGE 2
LOC OBJECT CODE LINE SOURCE TEXT
VALUE
00050 ;
0013 02E8 00051 loop10 decfsz LCTL,F
0014 0A20 00052 goto loop50
0015 0227 00053 movf LCTU,F
0016 0643 00054 BTFSC STATUS,Z
0017 0A1A 00055 goto loop12
0018 00E7 00056 decf LCTU,F
0019 0A20 00057 goto loop50
00058 ;
001A 0209 00059 loop12 movf LCT0U,W
001B 0027 00060 movwf LCTU
001C 020A 00061 movf LCT0L,W
001D 0028 00062 movwf LCTL
001E 0C20 00063 movlw BOSC
001F 01A6 00064 xorwf GPIO,F
00065 ;
0020 022C 00066 loop50 movf PCCTU,F
0021 0643 00067 btfsc STATUS,Z
0022 0A27 00068 goto loop52
0023 00ED 00069 decf PCCTL,F
0024 0643 00070 btfsc STATUS,Z
0025 00EC 00071 decf PCCTU,F
0026 0A54 00072 goto loop99
00073 ;
0027 0706 00074 loop52 btfss GPIO,CLKUP
0028 0A4A 00075 goto loop60
0029 0726 00076 btfss GPIO,CLKDW
002A 0A4F 00077 goto loop70
002B 0666 00078 btfsc GPIO,CLKCHG
002C 0A54 00079 goto loop99
00080 ;
002D 022B 00081 movf LCTK,F
002E 0743 00082 btfss STATUS,Z
002F 0A39 00083 goto loop53
0030 0C02 00084 movlw 2
0031 002B 00085 movwf LCTK
0032 0C01 00086 movlw LC100U
0033 0027 00087 movwf LCTU
0034 0029 00088 movwf LCT0U
0035 0C3B 00089 movlw LC100L
0036 0028 00090 movwf LCTL
0037 002A 00091 movwf LCT0L
0038 0A52 00092 goto loop90
00093 ;
0039 00EB 00094 loop53 decf LCTK,F
003A 0743 00095 btfss STATUS,Z
003B 0A43 00096 goto loop54
003C 0C00 00097 movlw LC10KU
003D 0027 00098 movwf LCTU
003E 0029 00099 movwf LCT0U
003F 0C03 00100 movlw LC10KL
0040 0028 00101 movwf LCTL
0041 002A 00102 movwf LCT0L
MPASM 5.34 SAMPLE.ASM 6-20-2017 10:36:27 PAGE 3
LOC OBJECT CODE LINE SOURCE TEXT
VALUE
0042 0A52 00103 goto loop90
00104 ;
0043 0C00 00105 loop54 movlw LC1KU
0044 0027 00106 movwf LCTU
0045 0029 00107 movwf LCT0U
0046 0C1F 00108 movlw LC1KL
0047 0028 00109 movwf LCTL
0048 002A 00110 movwf LCT0L
0049 0A52 00111 goto loop90
00112 ;
004A 022A 00113 loop60 movf LCT0L,F
004B 0643 00114 btfsc STATUS,Z
004C 00E9 00115 decf LCT0U,F
004D 00EA 00116 decf LCT0L,F
004E 0A52 00117 goto loop90
00118 ;
004F 02AA 00119 loop70 incf LCT0L,F
0050 0643 00120 btfsc STATUS,Z
0051 02A9 00121 incf LCT0U,F
00122 ;
0052 0C50 00123 loop90 movlw PCCTK
0053 002C 00124 movwf PCCTU
00125 ;
0054 0A13 00126 loop99 goto loop10
00127 ;
00128 END
MEMORY USAGE MAP ('X' = Used, '-' = Unused)
0000 : X----XXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX
0040 : XXXXXXXXXXXXXXXX XXXXX----------- ---------------- ----------------
0400 : XXXX------------ ---------------- ---------------- ----------------
0FC0 : ---------------- ---------------- ---------------- ---------------X
All other memory blocks unused.
Program Memory Words Used: 81
Program Memory Words Free: 943
Errors : 0
Warnings : 0 reported, 0 suppressed
Messages : 0 reported, 0 suppressed
カウンターとプログラムループで出力ポートの1/0を切り替えるだけです。入力ポートで100/1KHz/10KHzの切替とカウンターの増減(周波数の微調整)を行います。
次からは、PCで測れない高域の周波数特性が幾らかは覗えそうです。
以前に作ったトランジスタアンプ(エミッタ接地1段+バッファ)の波形を観測しました。
使用したUSBオシロは、OWON VDS2062。これのPCソフトはウインドウのリサイズが出来ないので、小型ノートPCでは全体が表示できなくなります(最新ソフトでは改善されてるかもしれません)。
赤:入力信号波形
黄:出力信号波形
使用したUSBオシロは、OWON VDS2062。これのPCソフトはウインドウのリサイズが出来ないので、小型ノートPCでは全体が表示できなくなります(最新ソフトでは改善されてるかもしれません)。
赤:入力信号波形
黄:出力信号波形
100Hzでは、トランジスタアンプの入力インピーダンスが小さいので、既に入力端子(ジェネレータ出力)の信号にサグが出てしまっています。ただ、アンプの出力にコンデンサが入っているので、若干サグが悪化しています。入力インピーダンスが高い場合は、
まあ、ちゃんとした波形で出力できています(最初に使用していたマンガン乾電池では、電源電圧変動でサグになっていました)。





