[戻る]
新着表示

電子工作入門書籍の選択 投稿者:Boro Engineer 投稿日:2018/09/01(Sat) 13:58:24 No.1201

後閑様
初投稿になります。よろしくお願いいたします。

(1)誰でも手軽にできる電子工作入門
(2)作る・できる/基礎入門 電子工作の素
(3)電子工作入門以前
(4)電子工作は失敗から学べ!

(1)の改訂版 = (2) ←前書きより
(2)の改訂版 = (3)&(4) ???

現状、書店で見かけるのは(2)(3)(4)です。(2)は現役の名著に見えますが、できれば最新版で勉強したいです。どれを買うか、迷ってます。

Re^3: dsPICを使ったFFT関数 投稿者:su- 投稿日:2018/08/22(Wed) 16:54:38 No.1199

解決しました。
お手数ありがとうございます。
入力信号が小さかっただけのようです。データに倍率をかけたとこと無事スペクトルが出ました。

> ご返事ありがとうございます。
> パラメータを変更しFFT_SIZE/2にしましたがうまくいきませんでした。
> microchip社のサンプルコードをそのまま試したところ、パワースペクトラムを得ることができましたが、ADC Interruptを加えるとうまくいかなくなります。
> BitReverseComplex(LOG2N, fftBuffer )まではうまくいき、dsPICworksでFFTの結果は見れるのですが、SquareMagnitudeCplx( FFT_SIZE , fftBuffer, powerspec)を入れるとpowerspecの値がすべて0になります。
>
>
>
> >多分、SquareMagnitudeCplx関数の最初のパラメータが間違って
> > いるのだと思います。 FFT_SIZE/2 にする必要があります。
>

Re^2: dsPICを使ったFFT関数 投稿者:su- 投稿日:2018/08/21(Tue) 15:44:18 No.1198

ご返事ありがとうございます。
パラメータを変更しFFT_SIZE/2にしましたがうまくいきませんでした。
microchip社のサンプルコードをそのまま試したところ、パワースペクトラムを得ることができましたが、ADC Interruptを加えるとうまくいかなくなります。
BitReverseComplex(LOG2N, fftBuffer )まではうまくいき、dsPICworksでFFTの結果は見れるのですが、SquareMagnitudeCplx( FFT_SIZE , fftBuffer, powerspec)を入れるとpowerspecの値がすべて0になります。



>多分、SquareMagnitudeCplx関数の最初のパラメータが間違って
> いるのだと思います。 FFT_SIZE/2 にする必要があります。

Re: pic24fj64gc006 投稿者:Gokan 投稿日:2018/08/13(Mon) 09:46:00 No.1197

MPLAB Code Configuratorを使って設定してみては?

これで生成される初期化関数の中身を見れば設定の仕方が
分かると重います。



> pic24fj64gc006の内部発振を用いて32MHzで動作させたいのですが、どうしても動きません。FRCやFRCDIVでは動作できるのですが、PLLを用いるととたんに動かなくなります。
>
> 以下コンフィグレーション
> // CONFIG4
> #pragma config DSWDTPS = DSWDTPS1F // Deep Sleep Watchdog Timer Postscale Select bits (1:68719476736 (25.7 Days))
> #pragma config DSWDTOSC = LPRC // DSWDT Reference Clock Select (DSWDT uses LPRC as reference clock)
> #pragma config DSBOREN = OFF // Deep Sleep BOR Enable bit (DSBOR Disabled)
> #pragma config DSWDTEN = OFF // Deep Sleep Watchdog Timer Enable (DSWDT Disabled)
> #pragma config DSSWEN = OFF // DSEN Bit Enable (Deep Sleep operation is always disabled)
> #pragma config RTCBAT = OFF // RTC Battery Operation Enable (RTC operation is discontinued in VBAT)
> #pragma config PLLDIV = DIV2 // PLL Input Prescaler Select bits (Oscillator divided by 2 (8 MHz input))
> #pragma config I2C2SEL = PRI // Alternate I2C2 Location Select bit (I2C2 is multiplexed to SDA2/RA3 and SCL2/RA2 )
> #pragma config IOL1WAY = OFF // PPS IOLOCK Set Only Once Enable bit (The IOLOCK bit can be set and cleared using the unlock sequence)
>
> // CONFIG3
> #pragma config WPFP = WPFP127 // Write Protection Flash Page Segment Boundary (Page 127 (0x1FC00))
> #pragma config SOSCSEL = OFF // SOSC Selection bits (Digital (SCLKI) mode)
> #pragma config WDTWIN = PS25_0 // Window Mode Watchdog Timer Window Width Select (Watch Dog Timer Window Width is 25 percent)
> #pragma config BOREN = OFF // Brown-out Reset Enable (Brown-out Reset Disabled)
> #pragma config WPDIS = WPDIS // Segment Write Protection Disable (Disabled)
> #pragma config WPCFG = WPCFGDIS // Write Protect Configuration Page Select (Disabled)
> #pragma config WPEND = WPENDMEM // Segment Write Protection End Page Select (Write Protect from WPFP to the last page of memory)
>
> // CONFIG2
> #pragma config POSCMD = NONE // Primary Oscillator Select (Primary Oscillator Disabled)
> #pragma config WDTCLK = LPRC // WDT Clock Source Select bits (WDT uses LPRC)
> #pragma config OSCIOFCN = ON // OSCO Pin Configuration (OSCO/CLKO/RC15 functions as port I/O (RC15))
> #pragma config FCKSM = CSDCMD // Clock Switching and Fail-Safe Clock Monitor Configuration bits (Clock switching and Fail-Safe Clock Monitor are disabled)
> #pragma config FNOSC = FRCPLL // Initial Oscillator Select (Fast RC Oscillator with PLL module (FRCPLL))
> #pragma config ALTADREF = AVREF_RA // External 12-Bit A/D Reference Location Select bit (AVREF+/AVREF- are mapped to RA9/RA10)
> #pragma config ALTCVREF = CVREF_RA // External Comparator Reference Location Select bit (CVREF+/CVREF- are mapped to RA9/RA10)
> #pragma config WDTCMX = WDTCLK // WDT Clock Source Select bits (WDT clock source is determined by the WDTCLK Configuration bits)
> #pragma config IESO = OFF // Internal External Switchover (Disabled)
>
> // CONFIG1
> #pragma config WDTPS = PS32768 // Watchdog Timer Postscaler Select (1:32,768)
> #pragma config FWPSA = PR128 // WDT Prescaler Ratio Select (1:128)
> #pragma config WINDIS = OFF // Windowed WDT Disable (Standard Watchdog Timer)
> #pragma config FWDTEN = WDT_DIS // Watchdog Timer Enable (WDT disabled in hardware; SWDTEN bit disabled)
> #pragma config ICS = PGx2 // Emulator Pin Placement Select bits (Emulator functions are shared with PGEC2/PGED2)
> #pragma config LPCFG = OFF // Low power regulator control (Disabled - regardless of RETEN)
> #pragma config GWRP = OFF // General Segment Write Protect (Disabled)
> #pragma config GCP = OFF // General Segment Code Protect (Code protection is disabled)
> #pragma config JTAGEN = OFF // JTAG Port Enable (Disabled)
>
> メイン関数
> /*********** メイン関数 **************************/
> int main(void){
> int j=0;
>
> OSCCONbits.COSC = 1;
> OSCCONbits.NOSC = 1;
> CLKDIVbits.RCDIV = 0;
> CLKDIVbits.CPDIV = 0;
>
> REFOCONbits.ROEN = 1; //REPO(30ピン)から動作周波数のクロックを出力
> REFOCONbits.ROSEL = 0;
> REFOCONbits.RODIV = 1;
>
> よろしくおねがいします

Re: dsPICを使ったFFT関数 投稿者:Gokan 投稿日:2018/08/13(Mon) 09:40:07 No.1196

多分、SquareMagnitudeCplx関数の最初のパラメータが間違って
いるのだと思います。 FFT_SIZE/2 にする必要があります。


> 初めまして。
> このサイトを参考にdsPIC33FJ64GP804を使ったFFT変換をやっています。
>
> #define LOG2N 7
> #define FFT_SIZE 128 //=2^7
> #define NUM_TAPS 13
> unsigned int Index;
> unsigned int flag;
> fractional SigIn[FFT_SIZE];
> fractional FilterOut[FFT_SIZE];
> fractcomplex fftBuffer[ FFT_SIZE ] __attribute__ ((space(ymemory), aligned (FFT_SIZE * 2 * 2))); // Place fftBuffer in Y-memory aligned to the size the array in bytes
> fractional window[FFT_SIZE]; // Hamming window
> fractional powerspec[FFT_SIZE]; // Power Spectrum
> fractcomplex twiddleFactors[ FFT_SIZE/2 ]__attribute__((space(xmemory)));
> fractional _YBSS(128) delay[FFT_SIZE];
> /*const fractional hpfCoeffs[NUM_TAPS] __attribute__ ((space(auto_psv), aligned (FFT_SIZE * 2 * 2))) ={
> 3,21,30,5,-61,-119,-76,99,296,292,-49,-560,-771,-262,856,1756,1305,-1093,-4854,-8327,23029,-8327,-4854,-1093,1305,1756,856,-262,-771,-560,-49,292,296,99,-76,-119,-61,5,30,21,3,0
> }; //filter coefficient
> FIRStruct HPF; //HPF fc1=1000 fc2=2000 */
> const fractional lpfCoeffs[NUM_TAPS] __attribute__ ((space(auto_psv), aligned (FFT_SIZE * 2 * 2))) ={
> 1424,-2012,-1898,131,4372,8848,10772,8848,4372,131,-1898,-2012,1424
> }; //filter coefficient
> FIRStruct LPF; //LPF fc1=1000 fc2=2000
>
>
> TwidFactorInit(LOG2N, twiddleFactors, 0);
> HammingInit (FFT_SIZE, window);
> FIRStructInit( &LPF, NUM_TAPS, (fractional *)lpfCoeffs, PSVPAG, delay );
> FIRDelayInit (&LPF);
>
> DISICNT = 0x0000; //enable interruput
> while(1)
> {
> //while(!flag);
> //flag = 0;
> for(j = 0; j < FFT_SIZE; j++)
> FIR (1, &FilterOut[j], &SigIn[j], &LPF);
> VectorWindow(FFT_SIZE, FilterOut, FilterOut, window);
> for(i = 0; i < FFT_SIZE; i++) {
> fftBuffer[i].real = FilterOut[i];
> fftBuffer[i].imag = 0;
> }
>
> FFTComplexIP(LOG2N, fftBuffer, twiddleFactors, COEFFS_IN_DATA);
> BitReverseComplex(LOG2N, fftBuffer );
> SquareMagnitudeCplx( FFT_SIZE , fftBuffer, powerspec);
>
>
> 以上のようなプログラミングを組みました。変数bufferとpowerspecをdsPICworksを用いてFFTの結果を確認しています。fftbufferまではうまくいくのですが、パワースペクトルであるpowerspecがうまくいかず、値がすべて0になってしまいます。引数が間違っているのでしょうか。
>
> 是非ご教授ください。
> よろしくお願いいたします。
>

dsPICを使ったFFT関数 投稿者:su- 投稿日:2018/08/07(Tue) 15:20:08 No.1194

初めまして。
このサイトを参考にdsPIC33FJ64GP804を使ったFFT変換をやっています。

#define LOG2N 7
#define FFT_SIZE 128 //=2^7
#define NUM_TAPS 13
unsigned int Index;
unsigned int flag;
fractional SigIn[FFT_SIZE];
fractional FilterOut[FFT_SIZE];
fractcomplex fftBuffer[ FFT_SIZE ] __attribute__ ((space(ymemory), aligned (FFT_SIZE * 2 * 2))); // Place fftBuffer in Y-memory aligned to the size the array in bytes
fractional window[FFT_SIZE]; // Hamming window
fractional powerspec[FFT_SIZE]; // Power Spectrum
fractcomplex twiddleFactors[ FFT_SIZE/2 ]__attribute__((space(xmemory)));
fractional _YBSS(128) delay[FFT_SIZE];
/*const fractional hpfCoeffs[NUM_TAPS] __attribute__ ((space(auto_psv), aligned (FFT_SIZE * 2 * 2))) ={
3,21,30,5,-61,-119,-76,99,296,292,-49,-560,-771,-262,856,1756,1305,-1093,-4854,-8327,23029,-8327,-4854,-1093,1305,1756,856,-262,-771,-560,-49,292,296,99,-76,-119,-61,5,30,21,3,0
}; //filter coefficient
FIRStruct HPF; //HPF fc1=1000 fc2=2000 */
const fractional lpfCoeffs[NUM_TAPS] __attribute__ ((space(auto_psv), aligned (FFT_SIZE * 2 * 2))) ={
1424,-2012,-1898,131,4372,8848,10772,8848,4372,131,-1898,-2012,1424
}; //filter coefficient
FIRStruct LPF; //LPF fc1=1000 fc2=2000


TwidFactorInit(LOG2N, twiddleFactors, 0);
HammingInit (FFT_SIZE, window);
FIRStructInit( &LPF, NUM_TAPS, (fractional *)lpfCoeffs, PSVPAG, delay );
FIRDelayInit (&LPF);

DISICNT = 0x0000; //enable interruput
while(1)
{
//while(!flag);
//flag = 0;
for(j = 0; j < FFT_SIZE; j++)
FIR (1, &FilterOut[j], &SigIn[j], &LPF);
VectorWindow(FFT_SIZE, FilterOut, FilterOut, window);
for(i = 0; i < FFT_SIZE; i++) {
fftBuffer[i].real = FilterOut[i];
fftBuffer[i].imag = 0;
}

FFTComplexIP(LOG2N, fftBuffer, twiddleFactors, COEFFS_IN_DATA);
BitReverseComplex(LOG2N, fftBuffer );
SquareMagnitudeCplx( FFT_SIZE , fftBuffer, powerspec);


以上のようなプログラミングを組みました。変数bufferとpowerspecをdsPICworksを用いてFFTの結果を確認しています。fftbufferまではうまくいくのですが、パワースペクトルであるpowerspecがうまくいかず、値がすべて0になってしまいます。引数が間違っているのでしょうか。

是非ご教授ください。
よろしくお願いいたします。

Re: トルクの求め方について 投稿者:伊藤 投稿日:2018/07/26(Thu) 11:38:27 No.1192

追加でもう1つ

Q3、摩擦係数μ:0.09に設定した理由、又は方法

お手数ですがご教授お願い致します。

以上

トルクの求め方について 投稿者:伊藤 投稿日:2018/07/26(Thu) 11:27:47 No.1191

サイトを拝見しました。
トルクの求め方についていくつか質問があります。

Q1、起動摩擦負荷トルクの求め方で L=μWD/4 と記載がありましたが
  4で割っている理由
  ※他のサイトでは駆動力F=μW、L=F×駆動輪の半径 r (cm)とあります。

Q2、加速期間の時間 t はどのように設定すれがいいか。

お手数ですがご教授お願い致します。

以上

pic24fj64gc006の内部発振 投稿者:24fj64gc006難しい 投稿日:2018/07/23(Mon) 14:37:52 No.1190

pic24fj64gc006の内部発振を用いて32MHzで動作させたいのですが、どうしても動きません。FRCやFRCDIVでは動作できるのですが、PLLを用いるととたんに動かなくなります。

以下コンフィグレーション
// CONFIG4
#pragma config DSWDTPS = DSWDTPS1F // Deep Sleep Watchdog Timer Postscale Select bits (1:68719476736 (25.7 Days))
#pragma config DSWDTOSC = LPRC // DSWDT Reference Clock Select (DSWDT uses LPRC as reference clock)
#pragma config DSBOREN = OFF // Deep Sleep BOR Enable bit (DSBOR Disabled)
#pragma config DSWDTEN = OFF // Deep Sleep Watchdog Timer Enable (DSWDT Disabled)
#pragma config DSSWEN = OFF // DSEN Bit Enable (Deep Sleep operation is always disabled)
#pragma config RTCBAT = OFF // RTC Battery Operation Enable (RTC operation is discontinued in VBAT)
#pragma config PLLDIV = DIV2 // PLL Input Prescaler Select bits (Oscillator divided by 2 (8 MHz input))
#pragma config I2C2SEL = PRI // Alternate I2C2 Location Select bit (I2C2 is multiplexed to SDA2/RA3 and SCL2/RA2 )
#pragma config IOL1WAY = OFF // PPS IOLOCK Set Only Once Enable bit (The IOLOCK bit can be set and cleared using the unlock sequence)

// CONFIG3
#pragma config WPFP = WPFP127 // Write Protection Flash Page Segment Boundary (Page 127 (0x1FC00))
#pragma config SOSCSEL = OFF // SOSC Selection bits (Digital (SCLKI) mode)
#pragma config WDTWIN = PS25_0 // Window Mode Watchdog Timer Window Width Select (Watch Dog Timer Window Width is 25 percent)
#pragma config BOREN = OFF // Brown-out Reset Enable (Brown-out Reset Disabled)
#pragma config WPDIS = WPDIS // Segment Write Protection Disable (Disabled)
#pragma config WPCFG = WPCFGDIS // Write Protect Configuration Page Select (Disabled)
#pragma config WPEND = WPENDMEM // Segment Write Protection End Page Select (Write Protect from WPFP to the last page of memory)

// CONFIG2
#pragma config POSCMD = NONE // Primary Oscillator Select (Primary Oscillator Disabled)
#pragma config WDTCLK = LPRC // WDT Clock Source Select bits (WDT uses LPRC)
#pragma config OSCIOFCN = ON // OSCO Pin Configuration (OSCO/CLKO/RC15 functions as port I/O (RC15))
#pragma config FCKSM = CSDCMD // Clock Switching and Fail-Safe Clock Monitor Configuration bits (Clock switching and Fail-Safe Clock Monitor are disabled)
#pragma config FNOSC = FRCPLL // Initial Oscillator Select (Fast RC Oscillator with PLL module (FRCPLL))
#pragma config ALTADREF = AVREF_RA // External 12-Bit A/D Reference Location Select bit (AVREF+/AVREF- are mapped to RA9/RA10)
#pragma config ALTCVREF = CVREF_RA // External Comparator Reference Location Select bit (CVREF+/CVREF- are mapped to RA9/RA10)
#pragma config WDTCMX = WDTCLK // WDT Clock Source Select bits (WDT clock source is determined by the WDTCLK Configuration bits)
#pragma config IESO = OFF // Internal External Switchover (Disabled)

// CONFIG1
#pragma config WDTPS = PS32768 // Watchdog Timer Postscaler Select (1:32,768)
#pragma config FWPSA = PR128 // WDT Prescaler Ratio Select (1:128)
#pragma config WINDIS = OFF // Windowed WDT Disable (Standard Watchdog Timer)
#pragma config FWDTEN = WDT_DIS // Watchdog Timer Enable (WDT disabled in hardware; SWDTEN bit disabled)
#pragma config ICS = PGx2 // Emulator Pin Placement Select bits (Emulator functions are shared with PGEC2/PGED2)
#pragma config LPCFG = OFF // Low power regulator control (Disabled - regardless of RETEN)
#pragma config GWRP = OFF // General Segment Write Protect (Disabled)
#pragma config GCP = OFF // General Segment Code Protect (Code protection is disabled)
#pragma config JTAGEN = OFF // JTAG Port Enable (Disabled)

メイン関数
/*********** メイン関数 **************************/
int main(void){
int j=0;

OSCCONbits.COSC = 1;
OSCCONbits.NOSC = 1;
CLKDIVbits.RCDIV = 0;
CLKDIVbits.CPDIV = 0;

REFOCONbits.ROEN = 1; //REPO(30ピン)から動作周波数のクロックを出力
REFOCONbits.ROSEL = 0;
REFOCONbits.RODIV = 1;

よろしくおねがいします

Re^2: PIC24F SFR 投稿者:安藤健志 投稿日:2018/07/02(Mon) 11:00:44 No.1186

2ヶ月半、8bitの評価ボードのチュートリアル、Easy24-33v6とmikroC PRO for dsPIC のチュートリアルを再復習しておりました。スイッチを押すと
10進数を16個のLEDで2進数化するというプログラムで、スイッチが2個しか使われないので、7つ使おうとしたところ、4つまでは何とかできました。関連するレジスタの設定を変えたのでしょう。何をやったか覚えていません。7つは無理だとも分かりました。UART通信で、以前できたチュートリアル、今回は送信するようですが、ASCIIコードがうまく受信できていないみたいです。また、ERASEしても、なにかレジスタに残っているのか?またはPICの頻繁な書き換えでPICも怪しくなってきました。
100回ほどの書き換えで壊れるとも思えませんが。PICを新品にすれば
少なくともチュートリアルは再度できるだろうと。しかし、PIC24F16KA102は入手できず、後閑先生の24Fで、評価ボードでも使えるもの、PIC24FGA002を手に入れたところです。そこで、アルレッキーノさんの記述を再度全て読み直しました。多くの示唆を再度かなり、リアルに分かりました。サポートのご示唆など、闇夜のともし火お如く、ありがたく感じました。再度、お礼をのべさせていただきます。

| 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 |

- WebForum -