从废品站拆了两个玩具车减速电机,一个旧蓝牙音箱拆出四颗MEMS麦克风,LM324运放两片,STM32F103C8T6核心板一块,L298N电机驱动模块,18650电池两节,LM2596降压模块,SG90舵机,超声波模块HC-SR04,洞洞板若干。麦克风焊盘太细,风枪一吹掉了两个,剩两个勉强用,后来从另一个旧耳机上拆了两个凑成四颗。Altium 2022新建工程,File→New→Project→PCB Project,下面加SchDoc、PcbDoc、SchLib、PcbLib四个文件,路径D:\AD\sound_car\,中文路径不要用,不然库加载静默失败。
四麦克风十字阵列,间距80mm,TDOA算方向,STM32做互相关,ADC采样20kHz,128点窗,算完角度给舵机。麦克风偏置1.65V,运放LM324带宽不够,换TL074,两级同相放大,第一级10倍第二级10倍,总100倍,带通300到3000Hz。原理图里运放输出接PA0到PA3,L298N接PB6到PB9,舵机PA8,电源7.4V转5V再转3.3V。ERC报Net VCC has no driving source,加PWR_FLAG解决,编译通过。
PCB板子100×80mm,双层,四麦克风放四角,间距80mm,开孔2mm,背面贴麦克风。STM32核心板居中,L298N靠电机端,电源模块靠电池端,模拟区和数字区分开,底层铺地,单点连接。线宽电源30mil,信号10mil,模拟信号12mil包地,过孔0.3/0.6mm。DRC跑完Un-Routed Net剩三条,手动连上,Hole Size Constraint Violation报安装孔3.2mm超规则,Rules里Maximum改5mm。

焊上去之后麦克风阵列焊反一个,左右声道反了,软件里PA1和PA2对调。运放自激,输出正弦波,反馈电阻并10pF电容消振。ADC底噪大,电源纹波200mV,LM2596开关频率150kHz,换线性稳压,底噪降到20mV。手机放1kHz正弦,距离1米,角度误差±15度,互相关峰值不明显,加汉宁窗改善。
跟踪逻辑,STM32算角度,PWM给舵机,超声波测距,小于30cm停车,大于30cm前进。角度大于10度左轮减速右轮加速,小于-10度反过来,中间直行。角度滑动平均窗口10,舵机不抖。PCB改了一版,麦克风孔从2mm改2.5mm,拆机麦克风直径2.3mm装不进去。
Gerber输出,Manufacture→Gerber Files,层选Top、Bottom、Top Silk、Bottom Silk、Top Solder、Bottom Solder、Keep-Out,钻孔Excellon 2:4,单位mm,路径D:\AD\sound_car\output\。嘉立创打样5片,板厚1.6mm,喷锡。板回来丝印压焊盘,重新出Gerber,丝印线宽6mil改8mil,字高50mil。AD2022的OutJob还没配,手动导的。
库里面麦克风封装用MMS-3030,焊盘0.6×1.0mm,间距1.1mm,核心板排针2.54mm,L298N端子5.08mm。原理图里Value默认不显示,双击元件在Properties里把Value的Visible勾上,Comment留空,图纸上才看得到10K、100nF这些值。批量改就Edit→Find Similar Objects,Object Kind选Part,Value那行Visible设Same,SCH Inspector里统一改True。
现在小车能追着手机跑,转弯半径太大,下一步差速比从1:0.5改成1:0.2,互相关128点在STM32上跑20ms,想换FFT,计算量……
免责声明:本文系网络转载或改编,未找到原创作者,版权归原作者所有。如涉及版权,请联系删