สารพันวงจร Circuits Ideas ฉบับที่ 5/41-50 เก็บรวบรวมวงจรไฟฟ้า ไว้มากสุดเท่าที่จะหาได้

41.วงจร Capacitive Sensor

รายการอุปกรณ์
R1,R2_____1M 1/4W Resistors
R3,R4____47K 1/4W Resistors
C1_______10?F 25V Electrolytic Capacitor
C2______470pF 630V Ceramic or Polyester Capacitor
D1-D3____1N4002 100V 1A Diodes
Q1-Q3_____BC337 45V 800mA NPN Transistors
RL1_______Relay with SPDT 2A @ 220V switch
Coil Voltage 12V. Coil resistance 200-300 Ohm
J1________Two ways output socket
Sensor____Aluminium or copper thin sheet with the dimensions of a post-card,
glued at the rear of the same (approx. 15x10.5 cm.)
Thin screened cable

001

42.วงจร Capstan Servo Amplifier

43.วงจร Car Voltage Gauge

44.วงจร Charge Pump Voltage Divider

45.วงจร Child’s - Lamp

46.วงจร CMOS ท็อคเกิ้ลฟลิบฟลอป โดยใช้เลเซอร์พ้อยน์เตอร์

001

47.วงจร CMOS ท็อคเกิ้ลฟลิบฟลอป โดยใช้สวิทช์กดติตปล่อยดับ

001

48.วงจร Commutator A Relay RC PCB

PCB2

49.วงจร Continuity Tester PCB
รายการอุปกรณ์
R1 = 1K D1,D2 = 1N4148
R2 = 2K2 Z1 = 8V2, 1/4 watt
R3,R4 = 22K T1 = 2N3905 (PNP)
R5 = 2K7 T2,3,4,5 =2N3904 (NPN)
R6,R7 = 56K 9volt Alkaline battery
R8 = *See text suitable loudspeaker
C1,C2 = 22nF housing & probes

An on-off switch is not necessary. D1 is used when the battery is brand-new and giving
over the nominal 9 volt, T1, T2 and T3 acting as the switch for supplying power
to the multivibrator

001

PCB1

PCB2

50.วงจร Counter - Timer (MC68HC908GR8CFB) PCB

code

#include"otackomer.h"

unsigned int countxtd,dispupd; // 3rd and 4th byte of timecounter */
unsigned char overctrl,invmeas,badmeas,notmeas;
unsigned long int lastpulse,delay; // Timestamp of last pulse

/* Counter overflow - rotations under resolution */
//#pragma interrupt_handler count_ctrl
//void count_ctrl(void)
//{
//   T2SC1&=~0x80;
//   overctrl=1;
//}

#pragma interrupt_handler count_xtd
void count_xtd(void)
{
   T2SC&=~0x80;
   asm("cli");
   countxtd++;
   overctrl=0;
   if(notmeas<255) notmeas++;
   if((notmeas>140)&&(!invmeas)) invmeas=1;
   if(dispupd) dispupd--;
}

#pragma interrupt_handler signal_in
void signal_in(void)
{
   uli currpulse;
   uchar tmpvar;
   T2SC0&=~0x80;
   tmpvar=T2CH0H;
   currpulse=((uli)countxtd<<16)|((uli)tmpvar<<8)|(uli)T2CH0L;
   if(overctrl&&(~tmpvar&0x80)) currpulse+=65536;
   delay=currpulse-lastpulse;
   if(delay>4096) lastpulse=currpulse;
//   lastpulse=currpulse;

   if(!invmeas)
   {
      if((delay<9830400)&&(delay>4096))
      {
		 notmeas=0;
      }
   } else { invmeas--; notmeas=0;}
}

void counter_init(void)
{
   T2SC=0x70;  // Reset, hold, BUSCLK/1
   T2MODH=0xFF;   // Round trip = 64k
   T2MODL=0xFF;
   T2SC0=0x48;  //Ch0 - i.c. on falling edge, interrupts
   invmeas=5;	//next 5 measurements will be invalided
   countxtd=0;
   overctrl=0;
   lastpulse=0;
   badmeas=1;
   notmeas=150;
   delay=0;
   dispupd=0;
   T2SC&=~0x20; //Start counter
}