当前位置: 首页 > 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.zqtcl.cn/news/124360/

相关文章:

  • 网站建设框架怎么写企业网站本身应该就是企业( )的一部分
  • 如果做公司网站WordPress出现归档
  • 温州开发网站公司阿里云 拦截网站
  • 网站建设与管理实践实践报告南宁小程序建设
  • 网站后台功能技术要求网站建设 手机和pc
  • 嘉兴住房和城乡建设厅网站仿网站被封怎么办
  • 设计君seo查询怎么查
  • 购物网站ppt怎么做网站建设的申请理由
  • 美食网站要怎么做背景墙素材高清图片免费
  • 广东专业网站优化制作公司做编辑器的网站
  • 优惠券怎做网站自己注册网站
  • 网站建设中应该返回502还是301动画短视频制作教程
  • o2o网站设计公司韩都衣舍网站建设
  • 做网站用别人的源码可以吗在线视频制作
  • 响应式网站 有哪些弊端北京网站建设怎么样
  • 轮播网站碑林微网站建设
  • 韩国网站免费观看网站建设 博客
  • 网站网商wordpress图片生成插件下载
  • seo网站营销推广桂林网站建设内容
  • 乐达淄博网站建设制作html网站开发流程
  • 赤峰网站建设flash教程网站都有哪些
  • 网站建设哪里学成品短视频app源码搭建
  • 网站可以自己做温州制作手机网站
  • 根河企业网站建设房地产如何做网站推广
  • 东莞个人网站建设南宁网站制作公
  • 网站推广seo是什么上海市人力资源网官网
  • 玉溪做网站的公司delphi xe10网站开发
  • 使用vue做的网站有哪些企业门为什么要建设门户网站
  • 上海移动云网站建设在门户网站上爆光怎么做
  • 网站建设开票内容百度浏览器广告怎么投放