about me

2019-07-14 09:53发布

1.第一个小东西,电子保险丝,主要用的的元件max471,实现电流与电压的转换,输入1A电流输出端对应是输出1V电压,比霍尔传感器来的简单也更精确。关于A/D转换器,应注意其基准电压为4.096,即2^12,这样进行转换更为精确。在进行net放置时出现了问题,因为net放置的位置不对,导致很多引脚不存在net,使得对应应该连接在一起的net没有连在一起。 2.第二个,I/V转换模块(4-20mA转0-4.096V)为了满足之后的TLC2543的输入电压。主要掌握运算放大器的知识。这次的电路先用multisim进行仿真,对其中的电阻的进行阻值选取。对运放的知识还掌握的不够全面,但是三个重要的概念,虚短(V+=V-),虚断(I+=I-=0),平衡电阻(使R+=R-)。 反相比例运算电路,即输入电压通过电阻后加在运放的反相输入端。 同相比例运算电路,即输入电压通过电阻后加在运放的同相输入端。 电压跟随器,即输出电压随着输入电压的变化而变化。反馈电阻为0。 加减运算电路,在分析时可以采用分别分析法,如先分析同相输入端,即看成是同相比例运算电路,把反相端除源,最后将两个分别算出的uo相加即可。或可用,u+=u-,分别求u+,u-的值,让其相等即可得出关系式。 3.在做usb-ttl时用到pl2303芯片,因为做单层板所以在放置贴片原器件是需注意,我们的贴片元件需放在底层bottom layer,所以当生成pcb图时我们需要将原器件进行修改,将焊盘和原器件都放在底层。在画贴片原器件的pcb封装时要注意,我们需要将焊盘的大小进行调整,将焊盘变长,这样更有利于我们焊接,但是焊盘边长是以焊盘中心点对两边进行延长,这样就点左右两边的焊盘距离有所影响,会缩短焊盘之间的距离,多以在设置左右焊板间距的时候我们需要将此间距加大,加大的值与焊盘加大的值相同,这样才能是得焊盘加长起到真正的作用。 4.转型做小车,第一次接触,先做了驱动模块,采用l298n驱动芯片,此芯片可以同时驱动两个直流电机。input1-4,4个输入控制端来分别控制两个电机的正反转通过给高低电平,而两个使能端分别控制电机的转速,通过pwm波中高低电频的占空比进行调节。 检测时发现只能驱动一个电机,输入vs为12v,vss为5v,结果输出1为9.8v,输出2为11.78v,只能驱动一个电机转动,检查发现在原理图连接时没有连接好,地标志与l298n的端口1的连接点没有连在一起,所以导入pcb后端口1没有网络,之前是因为net没有放置好导致pcb中没有网络,这次是连接没有连接好,真心测得想死了,以后一定注意! 5.昨天就想来写博客的,可是因为网络问题,一直进不来。想记录下昨天的东西。自己开始尝试写驱动程序,用51单片机,从刚开始了解pwm波到使一个电机驱动,再到调速,使两个电机驱动。 void Timer0_isr(void) interrupt 1
{
 static unsigned char count;
 TH0=(65536-2000)/256;    //重新赋值 2ms
 TL0=(65536-2000)%256;
 
 Display(0,8);                // 调用数码管扫描
 
if (count==PWM_ON)
    {
     DCOUT = 0;               //如果定时等于on的时间,
                         //说明作用时间结束,输出低电平
    }
  count++;
if(count == CYCLE)       //反之低电平时间结束后返回高电平
    {
    count=0;
 if(PWM_ON!=0)    //如果开启时间是0 保持原来状态
    DCOUT = 1;          }
 
} 在把程序都写完之后,想将程序规范化,整理清晰。将每个子函数放在一个组中,一个组包含一个.c文件,每个.c文件有一个.h文件。.c文件中写每个子程序的具体,.h文件中放.c文件的函数明,即进行声明,如: #ifndef __KEYSCAN_H__
#define __KEYSCAN_H__
unsigned char KeyScan(void); #endif 红 {MOD}字体为每个.h文件的规范,防止重复定义,其中的KEYSCAN是根据每个.c文件的名进行变化的,在对变量进行声明时在之前应加上extern,头文件一般用于声明,不进行赋值,如: 在.h文件中不能写 unsigned char code dofly_DuanMa[10]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};// 显示段码值0~9
unsigned char code dofly_WeiMa[]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f};//分别对应相应的数码管点亮,即位码
而应该写 extern unsigned char code dofly_DuanMa[10];// 显示段码值0~9
extern unsigned char code dofly_WeiMa[];//分别对应相应的数码管点亮,即位码