当前位置: 首页 > news >正文

无锡地区做网站嵌入式软硬件开发

无锡地区做网站,嵌入式软硬件开发,肇庆做网站,广州房产网如前篇所介绍#xff0c;用Shell Lab测试台软件配合之前介绍的任意款实验板#xff0c;都能方便地实现ADC电压测量#xff0c;但遇到两个问题#xff1a;示例代码虽然众多#xff0c;但大都默认ShellLab类型的控制器#xff0c;需要手动改为Mcush.Mcush类型才能运行…如前篇所介绍用Shell Lab测试台软件配合之前介绍的任意款实验板都能方便地实现ADC电压测量但遇到两个问题示例代码虽然众多但大都默认ShellLab类型的控制器需要手动改为Mcush.Mcush类型才能运行比较繁琐。基础的adc命令只能进行低速测量不能控制采样率实现高速测量需要更高阶的ShellLab采集器的daq指令。为了解决上述问题将Shell Lab T1采集器固件做了部分移植适配一批资源较为充裕的实验板定制成专用固件简称“Shell Lab社区版固件”系列解决上述两个问题方便大家实验。优先移植到STM32F401CC/411CE实验板上参考介绍PengShulin用Python控制硬件33-基于STM32F401CC和STM32F411CE的迷你实验板​zhuanlan.zhihu.com移植完成的“Shell Lab社区版固件”下载地址F401CC板子http://www.linkongsoft.com/shell-lab/firmware/ShellLabCommunity_WeActF401CC.binhttp://www.linkongsoft.com/shell-lab/firmware/ShellLabCommunity_WeActF401CC.hexF411CE板子http://www.linkongsoft.com/shell-lab/firmware/ShellLabCommunity_WeActF411CE.binhttp://www.linkongsoft.com/shell-lab/firmware/ShellLabCommunity_WeActF411CE.hex烧入固件注意BIN二进制代码需指定写入地址0x08000000完成后连上USB串口终端看看有哪些变化以F401CC为例$ dmesg ... [683194.776689] usb 1-4: new full-speed USB device number 117 using xhci_hcd [683194.962409] usb 1-4: New USB device found, idVendorffff, idProductffff [683194.962422] usb 1-4: New USB device strings: Mfr1, Product2, SerialNumber3 [683194.962429] usb 1-4: Product: Shell Lab Community Version [683194.962436] usb 1-4: Manufacturer: Linkong Software [683194.962442] usb 1-4: SerialNumber: 31003B001351353234363331 [683194.963681] cdc_acm 1-4:1.0: ttyACM0: USB ACM device $ USB设备类型变成“Shell Lab Community Version”*idn? ShellLab-WeAct-F401CC,1.0 31003B001351353234363331 设备类型识别变成ShellLab。daq --help usage: daq [-c command] [-i index] [-v value] options:-c/--cmd info|(de)init|start|stop|reset|done|read|freq|vref|channel_mask-i/--idx index param-v/--val value param 支持daq命令用于指定采样率测量波形。下面打开Shell Lab测试台软件调出示例脚本“daq”--“FFT analysis”准备信号发生器生成1KHz正弦波偏置1.5V幅度1V输入PA0引脚点击“运行”可以看到采到了0.016秒的波形包含4096个采样点下图是FFT分析结果分析带宽是采样率的一半256kHz/2128kHz并在较大的几个峰位置标注了幅度。点击导航栏的方向箭头按钮然后用鼠标右键可以拖动图表区实现缩放移动功能以便观察细节。动态效果256k采样率采集波形并FFT分析https://www.zhihu.com/video/1182229714634170368继续换几种波形看看三角波可以看到谐波的组成与方波相似1/3/5/7...只是衰减地很快锯齿波可以看到谐波组成的变化1/2/3/4...调幅波中心频率和两个边频更多的波形请读者自行实验了。下面分析一下完整的示范脚本代码加了中文注释# 6 - daq - FFT analysis # 脚本开始先确定采样参数通道、采样率、点数 CHANNEL 0 # input channel SAMPLE_RATE 256000 # HZ SAMPLE_LENGTH 4096 SAMPLE_TIME SAMPLE_LENGTH / float(SAMPLE_RATE) # FFT峰值检测标注的最大数量限制 PEAKS_LIMIT 10 # FFT是否需要加窗函数的开关 ADD_WINDOW False WINDOW_TYPE hamming# 下面切换至绘图区域准备几个字图每个都有命名方便后续控制 # 这是FFT相位子图的开关默认关闭开启后会增加一个子图 FFT_PHASE_PLOT False # True p getPlotPanel() p.addPlot( wave, 211, label_ySignal voltage ) p.setLimit( wave, top3.3, rightSAMPLE_TIME, autoFalse ) p.setLegend( wave,Channel %d% CHANNEL ) if FFT_PHASE_PLOT:p.addPlot( fft, 413, label_yFFT Amplitude, label_xFrequency (Hz) )p.setLimit( fft, rightSAMPLE_RATE/2, autoFalse )p.addPlot( fft2, 414, label_yFFT Phase, label_xFrequency (Hz) )p.setLimit( fft2, rightSAMPLE_RATE/2, autoFalse ) else:p.addPlot( fft, 212, label_yFFT Amplitude, label_xFrequency (Hz) )p.setLimit( fft, rightSAMPLE_RATE/2, autoFalse )# 创建控制器对象并初始化 s ShellLab(PORT) s.daq_init( freqSAMPLE_RATE, lengthSAMPLE_LENGTH, channels[CHANNEL] )while True:# 启动测量s.daq_start()# 循环等待测量结束while True:done s.daq_done()info(Sampling (%d / %d)% (done, SAMPLE_LENGTH))if done SAMPLE_LENGTH:breaktime.sleep(0.01)# 测量完成读数据因为只有一个通道传入第0通道的参数返回数据列表info(Reading...)dat s.daq_read(0) # read the first channel# 开始画图info(Ploting...)# 先绘制原始波形dat_x numpy.linspace(0, SAMPLE_TIME, SAMPLE_LENGTH, endpointFalse)p.resetData( wave )p.addData( wave, dat, dat_x )# 根据需要数据加窗if ADD_WINDOW:window scipy.signal.get_window( WINDOW_TYPE, len(dat) )dat_offset numpy.mean(dat)dat (dat-dat_offset) * window dat_offset# 快速傅立叶变换fft_x numpy.linspace(0, SAMPLE_RATE, SAMPLE_LENGTH, endpointFalse)fft_raw numpy.fft.fft(dat)/(SAMPLE_LENGTH/2)fft_abs abs(fft_raw)fft_abs[0] 0 # reset the waveform offset#fft_abs_max max(fft_abs)p.resetData( fft )#p.addData( fft, fft_abs, fft_x ) # plot the whole spectrum rangep.addData( fft, fft_abs[:SAMPLE_LENGTH/2], fft_x[:SAMPLE_LENGTH/2] )if FFT_PHASE_PLOT:fft_phase numpy.angle(fft_raw) / math.pi * 180p.resetData( fft2 )p.addData( fft2, fft_phase[:SAMPLE_LENGTH/2], fft_x[:SAMPLE_LENGTH/2] )# 查找谱图峰值并排序fft_max max(fft_abs[:SAMPLE_LENGTH/2])peaks, props scipy.signal.find_peaks(fft_abs[:SAMPLE_LENGTH/2],heightfft_max/5)def peak_sort( fa, fb ):global fft_absreturn 1 if (fft_abs[fa] fft_abs[fb]) else -1peaks list(peaks)peaks.sort( peak_sort, reverseTrue )# 添加峰值标注p.resetAnnotation(fft) # dynamic marker needs to be clear for next roundfor idx in peaks[:PEAKS_LIMIT]:# 默认标注幅度可以改为频率或自定义txt %f%fft_abs[idx] # add amplitude#txt %f%fft_x[idx] # add freq value#txt peaks.index(idx) 1 # add sequencep.addAnnotation( fft, txt, xy(fft_x[idx],fft_abs[idx]) )# 复位准备下一循环 s.daq_reset()上面代码的理解需要一定的数字信号处理基础这里就不展开了。熟悉Python的同学应该已经发现了 Shell Lab测试台软件集成了数值分析库numpy才能方便地进行矩阵分析快速傅立叶变换。没错除此之外还集成了scipy库进行科学计算集成了matplotlib库用于绘图。至此你可以用二三十元的成本获得一个简易的4通道12位精度的信号测量采集控制系统你可以改动脚本把数据存下来还具备数据记录功能。对比F401CC和F411CE两种板子有什么区别呢主要是后者SRAM容量大了64K字节所以单次的测量深度更长。实测前者最大12000点后者最大39000点推荐后者。注Shell Lab测试台软件对个人用户免费目前处于公测阶段欢迎试用。
http://www.pierceye.com/news/124360/

相关文章:

  • 工厂弄个网站做外贸如何app开发报价公司
  • 网销网站建设流程如何创建网站挣钱
  • 韶关网站制作手机推广app
  • Linux做视频网站网速均衡网页编辑实践报告
  • 做ppt好的模板下载网站如何查看网站空间商
  • 武义公司网站建设公司如何建设网站首页
  • hdwiki做网站罗湖网站建设联系电话
  • 深圳网站建设 利科技wordpress插件 手机版
  • 南通优普网站建设团队课程设计模板
  • 网站建设与维护的选择题浦东新区做网站
  • 做视频网站视频放在哪里网站备案目的
  • 建设部安全事故通报网站怎么更改网站的备案号
  • 重庆网站建设维护网络推广引流方法
  • 精品网站开发分销网站建站
  • 建设一个教程视频网站需要什么资质策划书案例范文
  • 郑州汉狮做网站的大公司海尔网站建设
  • 成都网站制作成都重庆网红景点排名
  • 广西南宁市网站制作公司制作图片的软件加字体
  • 新手搭建网站教程品牌推广费用预算
  • 广州网站设计网站制作竞价托管多少钱
  • 创建企业营销网站包括哪些内容软考高项彻底没用了
  • 企业品牌网站建设方案无锡网站设计多少钱
  • 轻量级网站开发在线旅游网站平台有哪些
  • 怎么用vs做网站推广优化网站排名
  • 免费推广网站软件常宁网站建设常宁网站建设
  • 冀州市网站建设html编辑器安卓版手机版软件
  • 广州专业网站改版方案网站建设要做ui和什么
  • 做网站显示上次登录时间代码h5素材库
  • 比较有名的网站建设公司谷歌网站优化
  • 企业网站改版计划书中国制造网是做什么的