摘要:
关于DSP和普通51 AVR还有STM32的区别 DSP是为运算而生的芯片,他最强大的地方就在与它的数**算性能,那是由它的指令集支持的。那些拿DSP和STM32比较的,省省吧,如果你两者都熟悉你就知道根本没啥好比的, 如果我需要很多高级的接口,比如以太网和USB,那么我自然选STM32,如果我需要实现一些算法,那肯定会选DSP。如果你对运算速度不敏感,反正72M的速度已经比原先单片机快很多了,那当然是看你熟悉哪个,哪个价格比较好,支持比较好。 从51 AVR到DSP最大的障碍 1、应该是编译环境吧,TI的DSP都用的是CCS,CCS界面和原先IAR区别不是一般的大,比如程序导入,比如观察变. 阅读全文
摘要:
1、没有统一的标准,其实PWM的频率和你的电机感抗和你需要的速度响应时间有很大的关系。一般的电机用14K就足够了。当然自需要简单的调速可以随便选。 如果电机转速比较高,感抗比较小,可以使用比较高的频率。一般最好不要超过20K因为一般IGBT最高20K的开关频率。 而MOS的开关频率比较高,,但是过高的F需要专用的驱动电路,不然MOS工作在放大区的时间比较长。 如果电机转速比较低,感抗比较大,而且又是在做伺服,那开关频率就需要低一点。2、对于电机应用,功率越大,PWM频率越低,最低有500Hz或者1KHz的,在兆瓦级的应用中。普通中小功率的,5K到20K常见,功率越低,电压等级越低,你所能使用的 阅读全文
摘要:
先说一下我的硬件情况:一块ATMEGA128实验板;一个带编码器的80:1的变速电机,编码器的输出端连接到单片机的PD4和PD5引脚;一块电机驱动电路,该电路的输入为:24v电源、两路pwm信号输入,输出即为电机的正负极,要用该电路来驱动电机,则必须让两路pwm输入信号的一路占空比为0,另一路不为0,相当于让电机的一极接地,另一极接pwm,通过控制两路pwm的占空比来控制电机的转速和转动方向。pwm信号的输入端连接到单片机的PD6和PD7引脚。下面是我的程序的设计思路:这个程序用了两个定时器:timer0和timer1。 timer0用来产生pwm。timer0产生pwm信号是这样实现的:程. 阅读全文
摘要:
小车下面就是L3G4200D + ADXL345 两个模块,加速度模块没固定好,板子太小了没地方打孔; 加速度模块角度计算: 如果传感器 x 轴朝下, y 轴朝前 那竖直方向弧度计算公式为: angle = atan2(y, z) //结果以弧度表示并介于 -pi 到 pi 之间(不包括 -pi) 如果要换算成具体角度: angle = atan2(y, z) * (180/3.14) 如:actan(1,sqrt(3)) * 180 / PI = 30° 陀螺仪角度计算: 式中angle(n)为陀螺仪采样到第n次的角度值; angle(n-1)为陀螺仪第n-1次采样时的角度值; g 阅读全文
摘要:
一、计算方法如下:先计算Track的截面积,大部分PCB的铜箔厚度为35um(即 1oz)它乘上线宽就是截面积,注意换算成平方毫米。有一个电流密度经验值,为15~25安培/平方毫米。把它称上截面积就得到通流容量。I=KT0.44A0.75(K为修正系数,一般覆铜线在内层时取0.024,在外层时取0.048; T为最大温升,单位为摄氏度(铜的熔点是1060℃); A为覆铜截面积,单位为平方MIL(不是毫米mm,注意是square mil.); I为容许的最大电流,单位为安培(amp)一般 10mil=0.010inch=0.254可为1A,250MIL=6.35mm, 为 8.3A二、数据: P 阅读全文
摘要:
View Code 1 #include <pic.h>//包含单片机内部资源预定义 2 #include <math.h> 3 4 unsigned char const sin_32[]={104,109,114,119,124,128,133,137,142,146,150,154,157,161,164,//15 5 167,169,172,174,176,177,178,179,180,180,180,180,179,178,176,175,173,171,168,165,//20 6 162,159,156,152,148,144,140,135,131,1 阅读全文
摘要:
按功放输出级放大元件的数量,可以分为单端放大器和推挽放大器。 单端放大器的输出级由一只放大元件(或多只元件但并联成一组)完成对信号正负两个半周的放大。单端放大机器只能采取甲类工作状态。 推挽放大器的输出级有两个“臂”(两组放大元件),一个“臂”的电流增加时,另一个“臂”的电流则减小,二者的状态轮流转换。对负载而言,好象是一个“臂”在推,一个“臂”在拉,共同完成电流输出任务。尽管甲类放大器可以采用推挽式放大,但更常见的是用推挽放大构成乙类或甲乙类放大器。 什么是推挽结构 一般是指两个三极管分别受两互补信号的控制,总是在一个三极管导通的时候另一个截止.要实现线与需要用OC(open col... 阅读全文
摘要:
用C语言编写程序的时候,我们经常会遇到这样一种情况:希望在头文件中定义一个全局变量,然后包含到两个不同的c文件中,希望这个全局变量能在两个文件中共用。 举例说明:项目文件夹project下有main.c、common.c和common.h三个文件,其中common.h文件分别#include在main.c和common.c文件中。现在希望声明一个字符型变量key,在main.c和common.c中公用。 有人想,既然是想两个文件都用,那就在common.h中声明一个unsigned char key,然后由于包含关系,在main.c和common.c中都是可见的,所以就能共用了。 想起来... 阅读全文
摘要:
一. 良好的编程风格 1.排版:a. 代码缩进空格数为4 个。若是可能,尽量用空格来代替Tab键,因为有些编译器不支持Tab键(我自己至今未见过,但确实有这个风险),这给程序的移植带来了问题。 b. 较长的语句要分2行来书写,并用‘\’符号隔开。 c. 函数代码的参数过长,分多行来书写。void UARTSendAndRecv(UINT8 *ucSendBuf, UINT8 ucSendLength, UINT8 *ucRecv... 阅读全文
摘要:
C 语言源文件 *.c 理想的模块化应该可以看成是一个黑盒子。即我们只关心模块提供的功能,而不管模块内部的实现细节。在大规模程序开发中,一个程序由很多个模块组成,这些模块的编写任务被分配到不同的人,编写这个模块的时候很可能就需要利用到别人写好的模块的接口,至于模块内部是如何组织的,外界不需要知道。而追求接口的单一性,把不需要的细节尽可能对外部屏蔽起来,正是我们所需要注意的地方。 C 语言头文件 *.h 模块化编程,必然会涉及到多文件编译,也就是工程编译。在这样的一个系统中,往往会有多个C 文件,而且每个C 文件的作用不尽相同。在我们的C文件中,由于需要对外提供接口,因此必须有一些函数或者是变. 阅读全文